Académique Documents
Professionnel Documents
Culture Documents
Minibloq + Arduino
Utilizzando l'ambiente di programmazione per la programmazione Minibloq Arduino scheda
Ver 1.0
Indice
1. Scopo di questo lavoro. 2. An Introduction to Minibloq 3. Uscita intermittente 4. Frequenza di uscita intermittente controllata da un canale ingresso analogico 5. Governo da una uscita del sensore. Metodo 1. 6. Governo da una uscita del sensore. Metodo 2. 7. Semaphore. 8. Semplice contatore. 9. Avanti / indietro. 10. Contatore a "zero". 11. Generatore di impulsi. 12. Logic funzione. 13. Movimento ciclico di 180 -180 o servo. 14. Semplice servocomando posizione (180 ) 15. Semplice controllo di un motore in corrente continua. 16. Velocit controllo di un motore DC. 17. Accelerazione di un motore DC. 18. Lettura di un canale di ingresso analogico. 19. Simulazione di un termostato. 20. Trasferimento di un ingresso valore analogico in uscita analogica 21. Termostato con LED e sensore LM35 22. Generazione di note musicali 23. ALLEGATO
Gennaio 2012 Versione del documento: V1.0 Jose Manuel Ruiz Gutirrez jmrgutierrez@gmail.com Riferimento Blog: http://josemanuelruizgutierrez.blogspot.com/
2
zoom, taglia e incolla, agganciabile finestre, e la tastiera navigazione sono solo alcune delle caratteristiche del GUI di Minibloq. E altro ancora ... Vi un terminale integrato che consente di inviare e la scheda ricevere dati tramite seriale / USB. Si tratta di "batterie incluse software." Il pacchetto include tutto ci per iniziare. Non richiede l'installazione (fatta eccezione per i driver necessari per le schede specifiche, come Arduino ). Pu essere eseguito da una pen drive troppo. Oh, e viene eseguito interamente off-line, il tutto in proprio computer. Per maggiori informazioni: possibile avere copie in parallelo Minibloq, anche con impostazioni diverse in esecuzione sul computer stesso. Si tratta di un'applicazione nativa, compilato con C + + (GCC) con wxWidgets. Per questo motivo, computer Minibloq adatto per fascia bassa e
4
notebook. E comprende anche i kernel precompilati costruito e scarica i programmi rapidamente. L'utente pu creare nuovi blocchi propria.
Prossimi caratteristiche
Il programma disponibile gratuitamente, nella sua versione completa. Nessuna spesa per le funzioni avanzate o simili. Solo scaricare e iniziare ad usarlo. Inoltre, il codice sorgente completo anche essere disponibile. La licenza si chiama RMPL (RobotGroup-Multiplo-pacifistaLicenza). Questa licenza fondamentalmente una licenza MIT, ma con una restrizione divieto di progetti militari.
Facile integrazione con nuovo hardware: Aggiunto il supporto per le nuove piattaforme e piastre sar semplice. Questo pu non essere una caratteristica di principianti, ma non cos difficile comunque. Compilatori e linguaggi diverso, qualcuno potrebbe aggiungere. Internazionalizzazione: La prima versione sar disponibile in inglese e spagnolo, ma l'utente e la comunit pu contribuire nuove traduzioni, e ci comporta solo la modifica di un file di testo.
Come si usa:
Scaricare lo strumento http://blog.minibloq.org/~~V Dopo aver installato il software sufficiente avviare il programma e visualizza l'ambiente:
Processo da seguire: 1. Scheda scelto dal gruppo di carte che comunica Minibloq.
2. Si collega la scheda alla porta USB e lasciando pochi secondi per la rilevata software seleziona la porta che connesso in luogo ambiente corrispondente.
3. Ora siamo pronti per iniziare la programmazione di blocchi e trascinando inserendoli nella cornice. Ogni blocco deve essere programmato con i suoi parametri.
4. Se vuoi puoi aprire il codice e vedere come va scrivere il codice in mezzo mettiamo blocchi della nostra applicazione.
5. Dopo aver inserito il "Run" programma trasmessa alla scheda interessato. Ogni componente ha dei parametri che sono configurabili Ad esempio in figura mostra il blocco menu di configurazione sincronizzazione
Alla fine di questo manuale fornisce un ELQ ALLEGATO eu sono citati in tutta la Minibloq blocchi.
3. Uscita intermittente
Il nostro primo esercizio sar acceso e spento LED diodo collegato a 13 pin di uscita della scheda Arduino. Il programma che devi fare attivare il pin di uscita 13 per 0.2 sec. E disattivarla per 1 sec. In un ciclo continuo.
2. All'interno di questo ciclo con il blocco "IOPin (Setter) " condizione vera (luce) si rivela essere il PIN D13_LED 13, Arduino card. 3. Quindi effettuare la sincronizzazione (uscita tempo attivo) da bloccare "Retaso" per 200 ms di 0,2 sec.
con l'
4. Il passo successivo quello di disabilitare il pin di uscita 13 e farlo di nuovo con il bloccare "IOPin (Setter) " (Off).
5. Infine si pongono ancora una volta uno dei "Delay" Timing blocco
(Time-off) per 1000 ms. Ie 1 sec.
Nella foto seguente si vede l'algoritmo completo indicato accanto al l' codice generato per essere compilato e scaricato l'applicazione quando si preme il pulsante "Esegui"
10
Il montaggio di questo primo esempio molto semplice ed mostrato nella seguente immagine.
11
mantenendo la condizione vera . 3. All'interno del ciclo le prime operazioni assegnato alla variabile spesso Canale analogico valore 0 "Sensor0" moltiplicato per 10. Questo sar ottenere con il blocco "variabile" l'ingresso abbiamo messo la
12
risultato di una operazione matematica "X" in cui i primi dati sono sensor0 canale e il secondo il valore numerico 10
con l'
5. Quindi effettuare la sincronizzazione (uscita tempo attivo) attraverso il blocco "Retaso" per tutto il tempo in questo caso si associa con la variabile "frequenza".
6. Il passo successivo quello di disabilitare il pin di uscita 13 e farlo di nuovo con il blocco "IOPin" solo che questa volta abbiamo messo il falso costante (off).
7. Infine si pongono ancora una volta uno dei "Delay" Timing blocco (tempo uscita off) tempo in questo caso si associa con la variabile "frequenza".
13
14
15
1. Sarebbe come sempre il ciclo "ripetere" sempre attivo 2. Il programma in questo caso, comprende una struttura condizionale in cui
condizione lo stato del perno 2 di ingresso che rilevato dal funzi one
"IOPin (collettore)" . 3. Se vero che il pin di ingresso 2 passa "true" e poi eseguire la parte se la utilizzando la condizionale "IOPin (setter)"
4. Se la condizione D13_LED allora l'uscita impostata su "false" attraverso istruzione "IOPin (setter)"
16
17
7. Luce
In questo esempio si esibir in un semaforo. Useremo le seguenti uscite Red Lamp Pin 13 Red Tr = 2 sec. PIN 11 Lamp Amber Amber Ta = Tempo 1sec Lampada PIN 10 Green Green Tv = Tempo di 2 sec.
Il programma molto semplice accesa e spenta in sequenza aporpoiada lasciando le tre luci tra ciascuna secuancia i tempi corrispondenti.
18
Abbiamo utilizzato per funzioni quali "IOPin (setter)" sia per l'accensione di arresto.
19
8. Semplice contatore
Il conteggio una funzione utile in sistemi per questa ragione che Poi prenderemo in considerazione il seguente esempio. Si tratta di andare a contare gli impulsi in arrivo tramite un ingresso digitale PIN 2. Per vedere che conta usiamo il terminale visualizacio0n porta Minibloq incorporante software attraverso questo terminale vedr come aumentare il valore del contatore non appena vengono ricevute il polso conta.
Nella figura sopra possiamo vedere quanto sia grave l'algoritmo per questo applicazione e il codice generato.
1. Per prima cosa definire una variabile che chiameremo "count" da
2. Il blocco seguente implementa un continuo ", mentre" la ripetizione 3. Poi si inserisce un blocco condizionale "se" nel che la condizione che l' Ingresso D2 "true"
4. Prossimo mettere un tipo "serie (setter)" blocco con la quale inviato al Arduino USB consignemos porta il valore che, in questo caso il variabile "Count"
5. Il seguente di aumentare la variabile "Conte", un blocco funzione del tipo "La variabile (assegnazione)"
6. Infine un ritardo stato posizionato in modo che il rinfresco del valore di variabile per mostrare che ogni tanto da permettere una facile lettura. Noi vediamo nella foto qui sotto l'aspetto della finestra di visualizzazione dei valori ha ricevuto al porto.
21
22
9. Avanti / indietro
Questa una variante del precedente esercizio in cui vogliamo avere a in avanti o indietro con due ingressi digitali e Digital3 Digilal2 corrispondente al pin pin 2 e 3 del PIN Arduino rispettivamente. Allo stesso modo abbiamo fatto nel precedente esempio definiamo contare variabile che memorizza il valore del contatore. Questa volta avremo due cicli come "se" uno per ciascuno dei due ha operations "Count" e"Sconti" 1. Attualizzazione:
Escludendo per il ciclo si verifica lo stato della variabile di ingresso digitale Digital3 PIN 3 e se vero che aumentare il contatore abilitato da un tipo di blocco funzionale "La variabile (assegnazione)" in cui l'ingresso conteggio -1: count = count -1
2. Non dimenticate che anche utilizzato il tipo di blocco "Serie (setter)" da che abbiamo inviato al Arduino porta USB consignemos il valore che, in questo Se la variabile "Count"
3. Conte. In questo caso i test condizionali l'ingresso di conteggio avanti 2 e PIN il resto identico a quello esempio semplice contatore.
23
24
25
1. Ripristina loop. In questo caso di montare un ciclo condizionale tipo "S" la cui condizione di esecuzione si trova premuto il pulsante posto al D3 all'ingresso PIN 3 della carta. Se la variabile vero eseguire: count = 0 2. Loop account. Questo esattamente come nei casi precedenti. Il ciclo eseguito ogni volta che si immette un valore "True" D2 dal pin di ingresso 2 della carta Arduino: count = count +1 3. Viene fornito come nei casi precedenti visualizzare il valore di variabile count utilizzando lo strumento del terminale Minibloq
Nella figura qui sotto vediamo lo schema grafico dell'algoritmo da creare insieme con il codice generato per inviare il IDEArduino
26
27
2. Poi, in un ciclo continuo verr eseguito due bulces "Nested" (Uno dentro l'altro). 3. Il primo ciclo sar per verificare se l'impulso di comando per generare 5 gli impulsi che provengono dal D2 ingresso
4. Poi. Se la condizione di essere generalmente 5 impulsi. Da peguntaremos con un caso condizionale nemmeno contare <5 (non generato di legumi secchi) non pu dimenticare che il primo impulso il numero "0" in modo l'ultimo numero contato deve essere di 4
28
5. Quello che dobbiamo fare ora inviare il valore della "Count" porta per la visualizzazione sul terminale.
8. Infine, fuori dal giro nel circuito di cui sopra dovrebbe essere messo a zero count variabile poich si presume che, se il conteggio condizione <5 perch ha gi raggiunto la fine di esso.
29
30
31
2. Nella parte della "condizione soddisfatta" mettere un blocco "IOpin (setter)" con cui attivare l'uscita D13_LED. 3. Se la condizione soddisfatta n disabilitare l'uscita con un blocco "IOpin (Setter) "
32
33
2. Il completamento del primo ciclo: Questo ciclo viene eseguito prima del 90 volte. Avanzando il servo fatto con l'aggiunta di 2 rispetto alla posizione precedente (partenza 0 ) con ritardi di 0,1 secondi. "ServoRC (setter)" e"Delay"
3. Forma di Attuazione del secondo ciclo: In questo secondo ciclo viene eseguita anche durante 90 volte. La diminuzione di servo avviene essendo 2 nella posizione precedente (Partenza da 180 ) con ritardi di 0,1 secondi. "ServoRC (setter)" e "Delay"
34
35
36
L'algoritmo semplice. 1. Viene prima azzerare la posizione di servo (posizione di riferimento o riposo) per blocco "ServoRC (setter)" 2. Quindi nel ciclo di ripetizione viene restituito al blocco "ServoRC (Setter)" 3. Il parametro che abbiamo messo il servo (angolo di rotazione) ottenuta da un semplice calcolo, che viene attuato lo stesso algoritmo: 4. Angolo * 1,8 = Valore sensor0
37
5. Ci avviene perch il valore massimo che misurano i sensori in questo Minibloq attuazione 100 in modo che il valore massimo di Angolo (180) dobbiamo moltiplicare per 1,8 Poi vediamo il codice generato pro Minibloq
38
39
40
41
42
2. L'ingresso al valore del parametro stessa velocit del motore viene alimentato da velocit di sopra del quale si ottiene blocco "Motor (collettore)"
3. stata completata con un ritardo "Delay" di 0,1 sec. per tali aumenti velocit sono pi evidenti. 4. Infine, eseguire il ciclo si arresta il motore
43
44
45
Processo da seguire. 1. Questa volta definiamo la variabile di ingresso analogico e temp e assegnare "0" "variabile (create)" 2. Questa variabile, come nel ciclo continuo del programma, riassegnato al valore assunto dal canale Analog0 Arduino equivalente
46
Variabile Minibloq sensor0 del canale analogico di Analog0 sensor0 funzione "La variabile (assegnazione)" 3. Che poi procedere a stabilire un composto condizionale "S, s no " che viene interrogato dal valore di "Temp" stabilito che:
se temp <20 poi pin di uscita digitale a 13 = true "Digital Power 13" e se la condizione non soddisfatta PIN 13 = false "Digital 13 off"
47
48
49
50
51
52
53
Di seguito riportato lo schema di installazione su breadboard di questo applicazione. stato preso come un sensore a semiconduttore sensore di temperatura LM35
54
55
23. ALLEGATO
Minibloq Biblioteca blocchi per Arduino
Azione selettore
Selettore immagini Nome parametro e descrizione A partire componente
Questo blocco indica l'inizio del programma (o componenti "). Note: Questo blocco non nella selezione dei titoli, ma un'azione comunque. Minibloq aggiunto un componente di blocco all'inizio di ogni nuova automaticamente componente
mentre
Questo blocco un ciclo "while" iniziare. Tutti i blocchi tra questo e la condizione: bool blocco successivo a ciclo viene ripetuto durante
ripetere
Questo blocco un numero ", mentre" ciclo iniziare. Tutti i blocchi tra esso e le iterazioni: numero blocco successivo a ciclo viene ripetuto durante
se
Questo blocco consente decisionale condizione based: bool nella condizione logica specificata.
ritardare
intervallo (ms): Questo blocco forza il programma di attendere il numero dei intervallo di tempo specificato (in millisecondi).
56
variabile (creare)
Questo blocco crea una variabile e permette il valore iniziale: inizio, per memorizzare un numero, o il numero risultato di una espressione, che pu essere
variabile (vacante)
Questo blocco consente di assegnare un valore al valore della variabile: il numero selezionata.
IOpin (setter)
Questo blocco imposta lo stato di un valore: bool Uscita del regolatore pin digitale.
AnalogWrite
Questo blocco consente il controllo del valore di uscita: il numero analogico (PWM).
Series (setter)
Questo blocco consente al programma di inviare dati dalla porta USB del controller (o valore: numero porta seriale, a seconda dell'hardware
Buzzer (setter)
Questo blocco di emettere suoni. Il primo parametro imposta la frequenza (nota) e la seconda volta (ms):
Motor (setter)
Questo blocco consente di controllare una potenza motore elettrico (-100 a collegato ad una delle uscite del motore 100): numero di
57
ServoRC (setter)
Questo blocco consente di impostare la posizione (angolo: il numero gradi) di un servo R / C collegato alla piastra.
In nmero_pantalla (setter)
Questo blocco pu visualizzare i numeri da -99 a 99 in valore (da -99 a 99): Controller di display (8x8 LED visualizza il numero di
ScreenSprite (setter)
Questo blocco consente di visualizzare uno del valore sprite: Sprite preinstallato sullo schermo del controller (con LED Display a matrice 8x8).
58
Motor (collettore)
Questo blocco restituisce lo stato di qualsiasi un motore elettrico collegato Motore di uscita del regolatore.
ServoRC (collettore)
Questo blocco restituisce la posizione (in qualsiasi gradi) di un servo R / C collegato al pin controllore digitale.
AnalogRead
Questo blocco restituisce il valore di una voce selezionata sensore analogico.
timeStamp
Questo blocco restituisce il numero di nessuno millisecondi dall'inizio del programma.
ramdom
Questo blocco restituisce un numero di nessuno pseudocasuale tra 0 e 100.
buzzerNote (costante)
Questo restituisce il blocco di frequenze che nessuno appartiene alla nota selezionata.
numero (costante)
Questo blocco restituisce un numero di nessuno costante.
pi (costante)
Questo blocco restituisce la costante pi qualsiasi un numero limitato di cifre decimali (3,14159265358979323846).
59
e (costante)
Questo blocco restituisce la costante e (o "none Il numero di Eulero ") con un numero limitato Decimali (2,7182818284590452354). value1: numero value2: numero
aggiungere
Nota: operandi Altri Questo blocco consente di aggiungere i numeri, (Valori) possono essere aggiunti altre variabili ed espressioni aritmetiche. utilizzando l'opzione "Aggiungi Parametri ":
moltiplicare
Questo blocco di moltiplicare i numeri altre variabili ed espressioni aritmetiche.
Nota: operandi Altri (Valori) possono essere aggiunti utilizzando l'opzione "Aggiungi Parametri ":
dividere
Numeratore: Numero Questo blocco consente di dividere i numeri, altre variabili ed espressioni aritmetiche. Denominatore: numero Inoltre, consente di inserire i numeri come
potenza
base: numero Questo blocco consente di caricare la prima parametro numerico (base) e l'esponente esponente: il numero (Ovvero di potenza) proposta dal parametro
60
secondo numerico.
abs
Questo blocco restituisce il valore assoluto: il numero numero o un'espressione aritmetica alla loro Sinistra.
minimo
value1: numero Questo blocco restituisce il minimo di due numeri, variabili o altre espressioni value2: numero
massimo
value1: numero Questo blocco restituisce il massimo di due numeri, variabili o altre espressioni value2: numero
valore: numero
mappa
fromLow: numero Questo blocco pu essere mappato linearmente un valore numerico di un intervallo di valori fromHigh: numero (FromLow a fromHigh) a un intervallo
tohigh: numero
vincolare
valore: numero Questo blocco consente di limitare un numero, uno variabile o altra espressione: numero di aritmetica a un valore compreso tra un minimo (a) e
seno
Questo blocco restituisce il seno del valore di angolo: il numero dato dal numero o espressione
61
coseno
Questo blocco restituisce il coseno del valore di angolo: il numero dato dal numero o espressione
tangente
Questo blocco restituisce la tangente del valore: il numero angolo dato dal numero o espressione
arcsin
Questo blocco restituisce l'angolo (valore: il numero radianti) il cui seno il numero o
arcocoseno
Questo blocco restituisce l'angolo (valore: il numero radianti) il cui coseno il numero o
arcotangente
Questo blocco restituisce l'angolo (valore: il numero radianti) la cui tangente il numero o
IrRemote
Questo blocco restituisce il numero che non n ottenuta da un sensore di controllo
Ping
Questo blocco restituisce la distanza (in cm) misurata con un sensore di nessuno ultrasuoni PING come Parallax))) [TM], SEN136B5B
62
reale (costante)
Questo blocco restituisce sempre "true".
false (costante)
Questo blocco restituisce sempre "false".
nessuno
come
value1: numero Questo blocco consente di confrontare Numero: numeri e restituisce "true" se value2
non uguale
value1: numero Questo blocco consente di confrontare i numeri e restituisce "true" se non sono value2: numero
abbassare
Questo blocco consente di confrontare value1: Number numeri (o espressioni aritmetiche) e restituisce "true" se il primo parametro value2: numero
63
maggiore
Questo blocco consente di confrontare value1: Number numeri (o espressioni aritmetiche) e restituisce "true" se il primo parametro value2: numero
minore o uguale
Questo blocco consente di confrontare value1: Number numeri (o espressioni aritmetiche) e restituisce "true" se il primo parametro value2: numero
maggiore o uguale
Questo blocco consente di confrontare value1: Number numeri (o espressioni aritmetiche) e restituisce "true" se il primo parametro value2: numero maggiore o uguale alla seconda.
non
Questo blocco pu negare il valore logico: bool (Boolean) espressioni. value1: bool value2: bool
Nota: operandi Altri Questo blocco fa una logica (booleana) (Valori) possono essere aggiunti utilizzando l'opzione "Aggiungi Parametri ":
value1: bool
value2: bool
Questo blocco fa una logica (booleana) Nota: pi operandi "Or" e restituisce il risultato. (Valori) possono essere aggiunti Parametri ":
64
value1: bool Questo blocco fa una logica (booleana) "Exclusive-OR" (XOR) e restituisce il value2: bool risultato.
arrabbiato (costante)
Questo blocco restituisce la "faccia arrabbiata" none
heartSmall (costante)
Questo blocco restituisce il "senza cuore piccolo "sprite.
heartBig (costante)
Questo blocco restituisce il "senza cuore
65
invader0 (costante)
Questo blocco restituisce il "0 Invader" no sprite.
invader1 (costante)
Questo blocco restituisce il "Invader 1" none
invader2 (costante)
Questo blocco restituisce il "Invader 2" none sprite.
invader3 (costante)
Questo blocco restituisce il "Invader 3" none sprite.
Questo allegato stato estratto dalla pagina Web hosting e software Minibloq
66