Laboratorio Arduino Catodo Anodo Esempi Rosso Rosso Nero
Laboratorio Arduino
Catodo (-) Anodo (+) •
Esempi: Rosso _ Rosso – Nero- Nero + (Marrone) = 220 ohm Marrone – Nero – Marrone + (Marrone) = 1 Kohm Marrone – Nero- Nero – Rosso + (Marropne) = 10 Kohm Marrone – Nero – Arancio + (Marrone) = 100 Kohm
const int LED = 12; // LED connected to digital pin 12 void setup() { pin. Mode(LED, OUTPUT); // sets the digital pin as output } void loop() { } digital. Write(LED, HIGH); // turns the LED on delay(1000); // waits for a second digital. Write(LED, LOW); // turns the LED off delay(1000); // waits for a second
LED: Pin OUT=P 9 BUTTON: Pin IN = P 7
const int LED = 9; const int BUTTON = 7; int stato; void setup() { pin. Mode(LED, OUTPUT); pin. Mode(BUTTON, INPUT); } void loop() { stato=digital. Read(BUTTON); if (stato==1) {digital. Write(LED, HIGH); } else {digital. Write(LED, LOW ); } }
… int stato_attuale, stato_passato; int luce; void setup() { … luce=0; } void loop() { stato_attuale=digital. Read(BUTTON); if ((stato_attuale-stato_passato)==1) {luce=1 -luce; } digital. Write(LED, luce); stato_passato=stato_attuale ; }
0 0
const int LED = 9; const int BUTTON = 7; int pulsante_attuale, pulsante_passato, stato, luce 1, luce 2; void setup() { pin. Mode(LED, OUTPUT); pin. Mode(BUTTON, INPUT); stato=0; } void loop() { pulsante_attuale=digital. Read(BUTTON); if ((pulsante_attuale-pulsante_passato)==1) stato=stato+1; if (stato==3) stato=0; if (stato==0) {luce 1=0; luce 2=0; } if (stato==1) {luce 1=1; luce 2=0; } if (stato==2) {luce 1=1; luce 2=1; } digital. Write(LED, luce 1); delay(10); digital. Write(LED, luce 2); delay(100); pulsante_passato=pulsante_attuale; }
• Diverse ampiezze vengono codificate con un duty cycle proporzionale • L’ambiente Arduino lo tutto ciò fa automaticamente con la funzione Analogwrite (solo per i pin “~”) • Il valore in ingresso va da 0 (spento) a 255 (acceso) ES: analog. Write(LED, 128) • Modifichiamo il codice precedente per accendere il LED a diverse intensità sfruttando questa funzione Nota: si possono modificare le proprietà del PWM agendo sui registri interni del Controllore
const int LED = 9; const int BUTTON = 7; int pulsante_attuale, pulsante_passato, stato, luce; void setup() { pin. Mode(LED, OUTPUT); pin. Mode(BUTTON, INPUT); stato=0; } void loop() { pulsante_attuale=digital. Read(BUTTON); if ((pulsante_attuale-pulsante_passato)==1) stato=stato+1; if (stato==3) stato=0; if (stato==0) {luce=0; } if (stato==1) {luce=64; } if (stato==2) {luce=255; } analog. Write(LED, luce); pulsante_passato=pulsante_attuale; }
void setup() { Serial. begin(9600); // inizializzazione } void loop() { Serial. println(val); } // visualizzazione
int analog. Pin = 0; int val = 0; void setup() { Serial. begin(9600); } void loop() { val = analog. Read(analog. Pin); Serial. println(val); }
• Funzioni setup{} e draw {} • Funzioni legate allo stato del Mouse • Funzione per disegnare (o meno) il background
Controllo se c’e’ un messaggio Decodifico il messaggio - Se il messaggio è 1 accendo il LED - Se il messaggio è 0 spengo il LED
#include <Servo. h>. . Servo myservo; void setup() { myservo. attach(PIN); } void loop() {. . . New = map(old, low_old, high_old, low_new, high_new); myservo. write(pos); . . . }
ES: dht 11. h #define DHTLIB_OK #define DHTLIB_ERROR_CHECKSUM #define DHTLIB_ERROR_TIMEOUT class dht 11 { public: int read(int pin); int humidity; int temperature; }; 0 -1 -2
#include <Servo. h> int analog. Pin = 0; int val = 0; Servo myservo; void setup() { myservo. attach(9); } void loop() { val = analog. Read(analog. Pin); val = map(val, 200 , 800, 0, 180); myservo. write(val); delay(15); }
Conservazione del Momento di Quantità di Moto
Sfrutta le moderne tecnologie di micro-meccanica e micro-elettronica
I_MPU 6050 To. Processing. ino NOTA BENE: Commentare o togliere il commento dalla riga opportuna #define OUTPUT_READABLE_YAWPITCHROLL // #define OUTPUT_TEAPOT // #define OUTPUT_BYTE_YAWPITCHROLL MPU 6050 I 2 Cdev
L-quadrato_rotante_mpu 6050. pde L-cubo_rotante_mpu 6050. pde M-MPU 6050_quaternion. pde
Imbardata Beccheggio Rollio Nei giroscopi meccanici bastava misurare I 3 angoli per avere direttamente I valori di rollio, beccheggio ed imbardata
Imbardata Ma cosa accade se due assi si allineano ? Beccheggio Rollio
Ma cosa accade se due assi si allineano ? - si perde un grado di libertà (non si può più distinguere tra rollio e imbardata)
Pilotaggio a 1 fase Pilotaggio a 2 fasi
#include <Stepper. h> const int steps. Per. Revolution = 2048; Stepper my. Stepper 1(steps. Per. Revolution, 8, 10, 9, 11); Stepper my. Stepper 2(steps. Per. Revolution, 4, 6, 5, 7); void setup() { my. Stepper 1. set. Speed(10); my. Stepper 2. set. Speed(10); } void loop() { my. Stepper 1. step(steps. Per. Revolution ); my. Stepper 2. step(-steps. Per. Revolution); delay(500); my. Stepper 1. step(-steps. Per. Revolution); my. Stepper 2. step(+steps. Per. Revolution); delay(500); }
• • set. Max. Speed set. Acceleration set. Speed (float speed) move. To distance. To. Go () current. Position () stop () run Ulteriori informazioni:
#include <Accel. Stepper. h> #define FULLSTEP 4 #define HALFSTEP 8 Accel. Stepper stepper 1(HALFSTEP, 8, 10, 9, 11); Accel. Stepper stepper 2(HALFSTEP, 4, 6, 5, 7); void setup() /****** SETUP: RUNS ONCE ******/ { stepper 1. set. Max. Speed(1000. 0); stepper 1. set. Acceleration(50. 0); stepper 1. set. Speed(200); stepper 1. move. To(8000); stepper 2. set. Max. Speed(1000. 0); stepper 2. set. Acceleration(50. 0); stepper 2. set. Speed(200); stepper 2. move. To(-8000); }//--(end setup )--void loop() /****** LOOP: RUNS CONSTANTLY ******/ { //Change direction at the limits if (stepper 1. distance. To. Go() == 0) stepper 1. move. To(-stepper 1. current. Position()); if (stepper 2. distance. To. Go() == 0) stepper 2. move. To(-stepper 2. current. Position()); stepper 1. run(); stepper 2. run(); }//--(end main loop )---
• Attenzione
- Slides: 63