From: eaman Date: Thu, 16 Mar 2017 14:08:01 +0000 (+0100) Subject: Motori X-Git-Url: http://git.piffa.net/web?p=sketchbook_andrea;a=commitdiff_plain;h=ea8d99c7d1bf9824a769c81533fe90e437ccd360 Motori --- diff --git a/basic/blinks/millis/millis.ino b/basic/blinks/millis/millis.ino index d2d473d..90f0c43 100644 --- a/basic/blinks/millis/millis.ino +++ b/basic/blinks/millis/millis.ino @@ -4,30 +4,23 @@ pin, without using the delay() function. This means that other code can run at the same time without being interrupted by the LED code. - Schema: https://lab.piffa.net/schemi/circuito_led_bb.png - http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay */ -// constants won't change. Used here to -// set pin numbers: const int led = 13; // Primo LED - -unsigned long previousMillis = 0; // will store last time LED was updated -unsigned long interval = 1000; // interval at which to blink (milliseconds) +unsigned long previousMillis = 0; // Ultimo agiornamento +unsigned long interval = 1000; // Pausa tra i lampeggi void setup() { - // set the digital pin as output: pinMode(led, OUTPUT); } void loop() { if (millis() - previousMillis >= interval) { - // Timestamp + timestamp = delta temporale previousMillis += interval ; digitalWrite(led, !digitalRead(led)); diff --git a/motors/motor_0/motor_0.ino b/motors/motor_0/motor_0.ino new file mode 100644 index 0000000..c2709f5 --- /dev/null +++ b/motors/motor_0/motor_0.ino @@ -0,0 +1,29 @@ +/* Simple Motor + +Gestione di un motore DC tramite Arduino. +Elementi richiesti: + +- motore DC a 5v per ~300ma +- transistor NPN 2N2222 +- diodo 1N4001 + + Schemi: + - Breadboard: http://lab.piffa.net/schemi/motor_transistor_diode_bb.png + - Schema circuito: http://lab.piffa.net/schemi/motor_transistor_diode_schem.png + + */ + +int motorPin = 9; // Pin tramite cui Arduino controlla il motore +void setup() { + pinMode(motorPin, OUTPUT); +} + +void loop() { + digitalWrite(motorPin, HIGH); // Accende il motore a tutta potenza + delay(1000); + digitalWrite(motorPin, LOW); // Spegne il motore + delay(5000); +} + + + diff --git a/motors/motor_1_PWM/motor_1_PWM.ino b/motors/motor_1_PWM/motor_1_PWM.ino new file mode 100644 index 0000000..087c90b --- /dev/null +++ b/motors/motor_1_PWM/motor_1_PWM.ino @@ -0,0 +1,33 @@ +/* Simple Motor: PWM + Gestine di un motore DC utilizzando il PWM + per modificarne la velocita': ciclo ascendente e discendente + + Schemi: + - Breadboard: http://lab.piffa.net/schemi/motor_transistor_diode_bb.png + - Schema circuito: http://lab.piffa.net/schemi/motor_transistor_diode_schem.png + + */ + +int motorPin = 9; // Pin tramite cui Arduino controlla il motore +void setup() { + pinMode(motorPin, OUTPUT); +} +void loop() { + for(int motorValue = 0 ; motorValue <= 255; motorValue +=5){ // PWM up + analogWrite(motorPin, motorValue); + delay(60); + } + for(int motorValue = 255 ; motorValue >= 0; motorValue -=5){ // PWM down + analogWrite(motorPin, motorValue); + delay(30); + } +delay(900); // Pause +} + +/* Domande +1. Il motore si muove con i valori di corrente molto bassi? +2. A quali valori comincia a muoversi effettivamente? +2.1 E per fermarsi, il valore e' diverso? +3. Impostare un valore minimo per la partenza del motore. +4. Come fare per invertire la direzione di rotazione del motore? +*/ diff --git a/motors/motor_1_PWM_soluzione/motor_1_PWM_soluzione.ino b/motors/motor_1_PWM_soluzione/motor_1_PWM_soluzione.ino new file mode 100644 index 0000000..76ef1d8 --- /dev/null +++ b/motors/motor_1_PWM_soluzione/motor_1_PWM_soluzione.ino @@ -0,0 +1,41 @@ +/* Simple Motor: PWM Soluzione + + Motore DC con variazione della velocita' tramite PWM + + Schemi: + - Breadboard: http://lab.piffa.net/schemi/motor_transistor_diode_bb.png + - Schema circuito: http://lab.piffa.net/schemi/motor_transistor_diode_schem.png + + */ + +int motorPin = 9; +int minValue = 60; // Valore minimo per far partire il motore da fermo +void setup() { + pinMode(motorPin, OUTPUT); +} +void loop() { + for(int motorValue = minValue ; motorValue <= 255; motorValue +=5){ // PWM up + analogWrite(motorPin, motorValue); + delay(60); + } + for(int motorValue = 255 ; motorValue >= 30; motorValue -=5){ // + // Quando il motore e' in movimento puo' muoversi fino a un valore piu' basso + // di minVal + analogWrite(motorPin, motorValue); + delay(30); + } +analogWrite(motorPin, 0); // Fermiamo il motore per sicurezza +delay(900); // Pause +} + +/* Domande +1. Il motore si muove con i valori di corrente molto bassi? +2. A quali valori comincia a muoversi effettivamente? +2.1 E per fermarsi, il valore e' diverso? +3. Impostare un valore minimo per la partenza del motore. +4. Come fare per invertire la direzione di rotazione del motore? + + Risposte: +4. Basta invertire la polarita' dei cavi che vanno al motore +*/ + diff --git a/motors/motor_2_PWM/motor_2_PWM.ino b/motors/motor_2_PWM/motor_2_PWM.ino new file mode 100644 index 0000000..670e0b0 --- /dev/null +++ b/motors/motor_2_PWM/motor_2_PWM.ino @@ -0,0 +1,43 @@ +/* + Simple Motor : Potenziometro + + Motore DC con variazione della velocita' impostata + tramite un potenziometro 10k ohms + + Schema: http://lab.piffa.net/schemi/motor_pot_bb.png + */ + +const int analogInPin = A0; // Pin a cui e' collegato il potenziometro +const int motorPin = 9; + +int potValue = 0; +int motValue = 0; + +void setup() { + pinMode(motorPin, OUTPUT); + Serial.begin(9600); // Debuggin + +} +void loop() { + potValue = analogRead(analogInPin); + motValue = potValue / 4 ; //mappatura 1024 -> 255 + + analogWrite(motorPin,motValue); // Imposta la velocita' del motore + + Serial.print("Pot value = " ); + Serial.print(potValue); + Serial.print("\t Motore velocita' = "); + Serial.println(motValue); + delay(3); // Pausa, aiuta a stabilizzare l'input + +} + +/* Domande + +1. Cosa succede quando il motore riceve poca corrente? +2. Impostare un valore minimo per la partenza del motore, + sotto al quale il motore non parta. +*/ + + + diff --git a/motors/motor_2_PWM_soluzione/motor_2_PWM_soluzione.ino b/motors/motor_2_PWM_soluzione/motor_2_PWM_soluzione.ino new file mode 100644 index 0000000..e585201 --- /dev/null +++ b/motors/motor_2_PWM_soluzione/motor_2_PWM_soluzione.ino @@ -0,0 +1,45 @@ +/* + Simple Motor: Pot - Soluzione + + Motore DC con variazione della velocita' tramite PWM + pilotata da un potenziometro + + Impostare una mappatura in modo che il motore parta + da un valore minimo adeguato. + + */ + +const int analogInPin = A0; +const int motorPin = 9; + +int potValue = 0; +int motValue = 0; + +void setup() { + pinMode(motorPin, OUTPUT); + Serial.begin(9600); // Debuggin + +} +void loop() { + potValue = analogRead(analogInPin) ; + motValue = potValue / 4 ;// Mappatura semplificata da 1024 -> 255 + +// Debug + Serial.print("Pot value = " ); + Serial.print(potValue); + Serial.print("\t Motor speed = "); + Serial.println(motValue); + + if (motValue > 60) { // Valore minimo per far partire il motore + analogWrite(motorPin,motValue); // + } + else analogWrite(motorPin,0); // Se non supera il valore minimo + // deve restare fermo + + delay(3); // Pause, stabilizza la lettura del Pot +} + +/* Domande: + 1. Rifare questo esercizio utilizzando la funzione map(). + + */ diff --git a/motors/motor_3_PWM_minimum/motor_3_PWM_minimum.ino b/motors/motor_3_PWM_minimum/motor_3_PWM_minimum.ino new file mode 100644 index 0000000..55cc0a6 --- /dev/null +++ b/motors/motor_3_PWM_minimum/motor_3_PWM_minimum.ino @@ -0,0 +1,43 @@ +/* + Simple Motor : Potenziometro con minimo + + Motore DC con variazione della velocita' impostata + tramite un potenziometro 10k ohms, + settato un valore minimo sotto il quale il motore + non viene attivato. + + Schema: http://lab.piffa.net/schemi/motor_pot_bb.png + + */ + +const int analogInPin = A0; // Pin a cui e' collegato il potenziometro +const int motorPin = 9; + +int potValue = 0; +int motValue = 0; +const int minMotValue = 50 ; // Valore minimo per il motore, + // questo variera' in base ai motori + +void setup() { + pinMode(motorPin, OUTPUT); + Serial.begin(9600); // Debuggin + +} +void loop() { + potValue = analogRead(analogInPin); + motValue = potValue / 4 ; // mappatura 1024 -> 255 + +if (motValue > minMotValue) { // Minimum motor spped check + analogWrite(motorPin,motValue); // Imposta la velocita' del motore +} else { +analogWrite(motorPin,LOW) ; +} + + + Serial.print("Pot value = " ); + Serial.print(potValue); + Serial.print("\t Motore velocita' = "); + Serial.println(motValue); + delay(3); // Pausa, aiuta a stabilizzare l'input + +} diff --git a/motors/motor_4_serial/motor_4_serial.ino b/motors/motor_4_serial/motor_4_serial.ino new file mode 100644 index 0000000..27a89ab --- /dev/null +++ b/motors/motor_4_serial/motor_4_serial.ino @@ -0,0 +1,68 @@ +/* + Simple Motor: Seriale + + Motore DC con variazione della velocita' impostata da connessione seriale + + */ + +const int motorPin = 9; +int motValue ; + +void setup() { + pinMode(motorPin, OUTPUT); + Serial.begin(9600); // Input + Serial.println("\t Usare valori da 0-255"); +// Serial.setTimeout(2000); // Imposta il tempo di time out per la lettura + // del buffer seriale, default = 1000ms +} + +void loop() { + if (Serial.available()) { + motValue = Serial.parseInt(); // leggiamo un valore da seriale + motValue = constrain(motValue,0,255); // Limitiamo l'input dell'utente + + analogWrite(motorPin,motValue); // Change the PWM speed of the motor + Serial.print("Velocita' motore = "); + Serial.println(motValue); + } +} + +/* Domande +1. Perche' il motore si resetta a zero dopo una breve pausa? +2. Come e' possibile fare in modo che il motore resti attivo + al valore dato? +3. Da cosa e' dovuto e come e' possibile rendere il circuito piu' responsivo + all'input dell'utente. +- Risposte a fondo pagina + + + + + + + + + + + + + + + + + + + + + + + + + + +1. Perche' vede il valore di terminazione riga + e lo scarta facendolo passare per zero +2. Impostare il monitor seriale per "Nessun fine riga" +2.1 impostare un ciclo condizionale che controlli che l'input sia composto solo da numeri +3. Impostare Serial.setTimeout per definire il tempo di lettura del buffer seriale +*/ diff --git a/motors/reverse_L293D_5/reverse_L293D_5.ino b/motors/reverse_L293D_5/reverse_L293D_5.ino index a13a368..b88f567 100644 --- a/motors/reverse_L293D_5/reverse_L293D_5.ino +++ b/motors/reverse_L293D_5/reverse_L293D_5.ino @@ -1,39 +1,37 @@ - /* - Adafruit Arduino - Lesson 15. Bi-directional Motor - - Pilotare un motore DC brushed con un H-bridge mediante - un integrato L293D - - - Schemi e istruzioni: - - https://learn.adafruit.com/adafruit-arduino-lesson-15-dc-motor-reversing/overview - - */ - - int enablePin = 11; - int in1Pin = 10; - int in2Pin = 9; - int switchPin = 7; - int potPin = 0; - - void setup() - { - pinMode(in1Pin, OUTPUT); - pinMode(in2Pin, OUTPUT); - pinMode(enablePin, OUTPUT); - pinMode(switchPin, INPUT_PULLUP); - } - - void loop() - { - int speed = analogRead(potPin) / 4; - boolean reverse = digitalRead(switchPin); - setMotor(speed, reverse); - } - - void setMotor(int speed, boolean reverse) - { - analogWrite(enablePin, speed); - digitalWrite(in1Pin, ! reverse); - digitalWrite(in2Pin, reverse); - } +/* +Adafruit Arduino - Lesson 15. Bi-directional Motor + +Pilotare un motore DC brushed con un H-bridge mediante +un integrato L293D + +Schemi e istruzioni: +- https://learn.adafruit.com/adafruit-arduino-lesson-15-dc-motor-reversing/overview +*/ + +int enablePin = 11; +int in1Pin = 10; +int in2Pin = 9; +int switchPin = 7; +int potPin = 0; + +void setup() +{ + pinMode(in1Pin, OUTPUT); + pinMode(in2Pin, OUTPUT); + pinMode(enablePin, OUTPUT); + pinMode(switchPin, INPUT_PULLUP); +} + +void loop() +{ + int speed = analogRead(potPin) / 4; + boolean reverse = digitalRead(switchPin); + setMotor(speed, reverse); +} + +void setMotor(int speed, boolean reverse) +{ + analogWrite(enablePin, speed); + digitalWrite(in1Pin, !reverse); + digitalWrite(in2Pin, reverse); +} diff --git a/motors/servo/Knob_2/Knob_2.ino b/motors/servo/Knob_2/Knob_2.ino index 998c8a7..08bd209 100644 --- a/motors/servo/Knob_2/Knob_2.ino +++ b/motors/servo/Knob_2/Knob_2.ino @@ -1,11 +1,13 @@ // Controlling a servo position using a potentiometer (variable resistor) // by Michal Rinott +// Schema: https://lab.piffa.net/schemi/potenziometro_bb.png + #include Servo myservo; // create servo object to control a servo -int potpin = 0; // analog pin used to connect the potentiometer +const int potpin = A0; // analog pin used to connect the potentiometer int val; // variable to read the value from the analog pin void setup() diff --git a/motors/servo/Sweep_1/Sweep_1.ino b/motors/servo/Sweep_1/Sweep_1.ino index fb326e7..4c0c39f 100644 --- a/motors/servo/Sweep_1/Sweep_1.ino +++ b/motors/servo/Sweep_1/Sweep_1.ino @@ -18,12 +18,12 @@ void setup() void loop() { - for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees + for (pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees { // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } - for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees + for (pos = 180; pos >= 1; pos -= 1) // goes from 180 degrees to 0 degrees { myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position diff --git a/motors/simple_motor_4_serial/simple_motor_4_serial.ino b/motors/simple_motor_4_serial/simple_motor_4_serial.ino deleted file mode 100644 index ff20e9b..0000000 --- a/motors/simple_motor_4_serial/simple_motor_4_serial.ino +++ /dev/null @@ -1,78 +0,0 @@ -/* - Simple Motor: Seriale - - Motore DC con variazione della velocita' impostata da connessione seriale - - */ - -const int motorPin = 9; -int motValue ; - -void setup() { - pinMode(motorPin, OUTPUT); - Serial.begin(9600); // Input - Serial.println("\t Usare valori da 0-255"); - // Serial.setTimeout(2000); // Imposta il tempo di time out per la lettura - // del buffer seriale, default = 1000ms - -} -void loop() { -if (Serial.available()) - { - motValue = Serial.parseInt(); // leggiamo un valore da seriale - motValue = constrain(motValue,0,255); // Limitiamo l'input dell'utente - - analogWrite(motorPin,motValue); // Change the PWM speed of the motor - Serial.print("Velocita' motore = "); - Serial.println(motValue); - } - - - -} - -/* Domande -1. Perche' il motore si resetta a zero dopo una breve pausa? -2. Come e' possibile fare in modo che il motore resti attivo - al valore dato? -3. Da cosa e' dovuto e come e' possibile rendere il circuito piu' responsivo - all'input dell'utente. -- Risposte a fondo pagina - - - - - - - - - - - - - - - - - - - - - - - - - - -1. Perche' vede il valore di terminazione riga - e lo scarta facendolo passare per zero -2. Impostare il monitor seriale per "Nessun fine riga" -2.1 impostare un ciclo condizionale che controlli che l'input sia composto solo da numeri -3. Impostare Serial.setTimeout che definisce il tempo di lettura del buffer seriale -*/ - - - - - - diff --git a/motors/simple_motor_PWM_potenziometer__minimum_transistor_diode_3/simple_motor_PWM_potenziometer__minimum_transistor_diode_3.ino b/motors/simple_motor_PWM_potenziometer__minimum_transistor_diode_3/simple_motor_PWM_potenziometer__minimum_transistor_diode_3.ino deleted file mode 100644 index d73ec6f..0000000 --- a/motors/simple_motor_PWM_potenziometer__minimum_transistor_diode_3/simple_motor_PWM_potenziometer__minimum_transistor_diode_3.ino +++ /dev/null @@ -1,49 +0,0 @@ -/* - Simple Motor : Potenziometro con minimo - - Motore DC con variazione della velocita' impostata - tramite un potenziometro 10k ohms, - settato un valore minimo sotto il quale il motore - non viene attivato. - - Schema: http://lab.piffa.net/schemi/motor_pot_bb.png - - */ - -const int analogInPin = A0; // Pin a cui e' collegato il potenziometro -const int motorPin = 9; - -int potValue = 0; -int motValue = 0; -const int minMotValue = 50 ; // Valore minimo per il motore, - // questo variera' in base ai motori - -void setup() { - pinMode(motorPin, OUTPUT); - Serial.begin(9600); // Debuggin - -} -void loop() { - potValue = analogRead(analogInPin); - motValue = potValue / 4 ; // mappatura 1024 -> 255 - -if (motValue > minMotValue) { // Minimum motor spped check - analogWrite(motorPin,motValue); // Imposta la velocita' del motore -} else { -analogWrite(motorPin,LOW) ; -} - - - Serial.print("Pot value = " ); - Serial.print(potValue); - Serial.print("\t Motore velocita' = "); - Serial.println(motValue); - delay(3); // Pausa, aiuta a stabilizzare l'input - -} - - - - - - diff --git a/motors/simple_motor_PWM_potenziometer_transistor_diode_2/simple_motor_PWM_potenziometer_transistor_diode_2.ino b/motors/simple_motor_PWM_potenziometer_transistor_diode_2/simple_motor_PWM_potenziometer_transistor_diode_2.ino deleted file mode 100644 index 9a43bcd..0000000 --- a/motors/simple_motor_PWM_potenziometer_transistor_diode_2/simple_motor_PWM_potenziometer_transistor_diode_2.ino +++ /dev/null @@ -1,43 +0,0 @@ -/* - Simple Motor : Potenziometro - - Motore DC con variazione della velocita' impostata - tramite un potenziometro 10k ohms - - Schema: http://lab.piffa.net/schemi/motor_pot_bb.png - */ - -const int analogInPin = A0; // Pin a cui e' collegato il potenziometro -const int motorPin = 9; - -int potValue = 0; -int motValue = 0; - -void setup() { - pinMode(motorPin, OUTPUT); - Serial.begin(9600); // Debuggin - -} -void loop() { - potValue = analogRead(analogInPin); - motValue = potValue / 4 ; //mappatura 1024 -> 255 - - analogWrite(motorPin,motValue); // Imposta la velocita' del motore - - Serial.print("Pot value = " ); - Serial.print(potValue); - Serial.print("\t Motore velocita' = "); - Serial.println(motValue); - delay(3); // Pausa, aiuta a stabilizzare l'input - -} - -/* Domande - -1. Cosa succede quando il motore riceve poca corrente? -2. Impostare un valore minimo per la partenza del motore, - sotto al quale il motore non parte. -*/ - - - diff --git a/motors/simple_motor_PWM_potenziometer_transistor_diode_2_soluzione/simple_motor_PWM_potenziometer_transistor_diode_2_soluzione.ino b/motors/simple_motor_PWM_potenziometer_transistor_diode_2_soluzione/simple_motor_PWM_potenziometer_transistor_diode_2_soluzione.ino deleted file mode 100644 index 1094bb8..0000000 --- a/motors/simple_motor_PWM_potenziometer_transistor_diode_2_soluzione/simple_motor_PWM_potenziometer_transistor_diode_2_soluzione.ino +++ /dev/null @@ -1,47 +0,0 @@ -/* - Simple Motor: Pot - Soluzione - - Motore DC con variazione della velocita' tramite PWM - pilotata da un potenziometro - - Impostare una mappatura in modo che il motore parta - da un valore minimo adeguato. - - */ - -const int analogInPin = A0; -const int motorPin = 9; - -int potValue = 0; -int motValue = 0; - -void setup() { - pinMode(motorPin, OUTPUT); - Serial.begin(9600); // Debuggin - -} -void loop() { - potValue = analogRead(analogInPin) ; - motValue = potValue / 4 ;// Mappatura semplificata da 1024 -> 255 - -// Debug - Serial.print("Pot value = " ); - Serial.print(potValue); - Serial.print("\t Motor speed = "); - Serial.println(motValue); - - if (motValue > 60) { // Valore minimo per far partire il motore - analogWrite(motorPin,motValue); // - } - else analogWrite(motorPin,0); // Se non supera il valore minimo - // deve restare fermo - - delay(3); // Pause, stabilizza la lettura del Pot -} - - - - - - - diff --git a/motors/simple_motor_PWM_transistor_diode_1/simple_motor_PWM_transistor_diode_1.ino b/motors/simple_motor_PWM_transistor_diode_1/simple_motor_PWM_transistor_diode_1.ino deleted file mode 100644 index 087c90b..0000000 --- a/motors/simple_motor_PWM_transistor_diode_1/simple_motor_PWM_transistor_diode_1.ino +++ /dev/null @@ -1,33 +0,0 @@ -/* Simple Motor: PWM - Gestine di un motore DC utilizzando il PWM - per modificarne la velocita': ciclo ascendente e discendente - - Schemi: - - Breadboard: http://lab.piffa.net/schemi/motor_transistor_diode_bb.png - - Schema circuito: http://lab.piffa.net/schemi/motor_transistor_diode_schem.png - - */ - -int motorPin = 9; // Pin tramite cui Arduino controlla il motore -void setup() { - pinMode(motorPin, OUTPUT); -} -void loop() { - for(int motorValue = 0 ; motorValue <= 255; motorValue +=5){ // PWM up - analogWrite(motorPin, motorValue); - delay(60); - } - for(int motorValue = 255 ; motorValue >= 0; motorValue -=5){ // PWM down - analogWrite(motorPin, motorValue); - delay(30); - } -delay(900); // Pause -} - -/* Domande -1. Il motore si muove con i valori di corrente molto bassi? -2. A quali valori comincia a muoversi effettivamente? -2.1 E per fermarsi, il valore e' diverso? -3. Impostare un valore minimo per la partenza del motore. -4. Come fare per invertire la direzione di rotazione del motore? -*/ diff --git a/motors/simple_motor_PWM_transistor_diode_1_soluzione/simple_motor_PWM_transistor_diode_1_soluzione.ino b/motors/simple_motor_PWM_transistor_diode_1_soluzione/simple_motor_PWM_transistor_diode_1_soluzione.ino deleted file mode 100644 index 99854b7..0000000 --- a/motors/simple_motor_PWM_transistor_diode_1_soluzione/simple_motor_PWM_transistor_diode_1_soluzione.ino +++ /dev/null @@ -1,42 +0,0 @@ -/* Simple Motor: PWM Soluzione - - Motore DC con variazione della velocita' tramite PWM - - Schemi: - - Breadboard: http://lab.piffa.net/schemi/motor_transistor_diode_bb.png - - Schema circuito: http://lab.piffa.net/schemi/motor_transistor_diode_schem.png - - */ - -int motorPin = 9; -int minValue = 60; // Valore minimo per far partire il motore da fermo -void setup() { - pinMode(motorPin, OUTPUT); -} -void loop() { - for(int motorValue = minValue ; motorValue <= 255; motorValue +=5){ // PWM up - analogWrite(motorPin, motorValue); - delay(60); - } - for(int motorValue = 255 ; motorValue >= 30; motorValue -=5){ // - // Quando il motore e' in movimento puo' muoversi fino a un valore piu' basso - // di minVal - analogWrite(motorPin, motorValue); - delay(30); - } -analogWrite(motorPin, 0); // Fermiamo il motore per sicurezza -delay(900); // Pause -} - -/* Domande -1. Il motore si muove con i valori di corrente molto bassi? -2. A quali valori comincia a muoversi effettivamente? -2.1 E per fermarsi, il valore e' diverso? -3. Impostare un valore minimo per la partenza del motore. -4. Come fare per invertire la direzione di rotazione del motore? - - Risposte: -4. Basta invertire la polarita' dei cavi che vanno al motore - -*/ - diff --git a/motors/simple_motor_transistor_diode_0/simple_motor_transistor_diode_0.ino b/motors/simple_motor_transistor_diode_0/simple_motor_transistor_diode_0.ino deleted file mode 100644 index c2709f5..0000000 --- a/motors/simple_motor_transistor_diode_0/simple_motor_transistor_diode_0.ino +++ /dev/null @@ -1,29 +0,0 @@ -/* Simple Motor - -Gestione di un motore DC tramite Arduino. -Elementi richiesti: - -- motore DC a 5v per ~300ma -- transistor NPN 2N2222 -- diodo 1N4001 - - Schemi: - - Breadboard: http://lab.piffa.net/schemi/motor_transistor_diode_bb.png - - Schema circuito: http://lab.piffa.net/schemi/motor_transistor_diode_schem.png - - */ - -int motorPin = 9; // Pin tramite cui Arduino controlla il motore -void setup() { - pinMode(motorPin, OUTPUT); -} - -void loop() { - digitalWrite(motorPin, HIGH); // Accende il motore a tutta potenza - delay(1000); - digitalWrite(motorPin, LOW); // Spegne il motore - delay(5000); -} - - -