From ea8d99c7d1bf9824a769c81533fe90e437ccd360 Mon Sep 17 00:00:00 2001 From: eaman Date: Thu, 16 Mar 2017 15:08:01 +0100 Subject: [PATCH] Motori --- basic/blinks/millis/millis.ino | 11 +-- .../motor_0.ino} | 0 .../motor_1_PWM.ino} | 0 .../motor_1_PWM_soluzione.ino} | 1 - .../motor_2_PWM.ino} | 2 +- .../motor_2_PWM_soluzione.ino} | 8 +- .../motor_3_PWM_minimum.ino} | 6 -- motors/motor_4_serial/motor_4_serial.ino | 68 ++++++++++++++++ motors/reverse_L293D_5/reverse_L293D_5.ino | 76 +++++++++--------- motors/servo/Knob_2/Knob_2.ino | 4 +- motors/servo/Sweep_1/Sweep_1.ino | 4 +- .../simple_motor_4_serial.ino | 78 ------------------- 12 files changed, 116 insertions(+), 142 deletions(-) rename motors/{simple_motor_transistor_diode_0/simple_motor_transistor_diode_0.ino => motor_0/motor_0.ino} (100%) rename motors/{simple_motor_PWM_transistor_diode_1/simple_motor_PWM_transistor_diode_1.ino => motor_1_PWM/motor_1_PWM.ino} (100%) rename motors/{simple_motor_PWM_transistor_diode_1_soluzione/simple_motor_PWM_transistor_diode_1_soluzione.ino => motor_1_PWM_soluzione/motor_1_PWM_soluzione.ino} (99%) rename motors/{simple_motor_PWM_potenziometer_transistor_diode_2/simple_motor_PWM_potenziometer_transistor_diode_2.ino => motor_2_PWM/motor_2_PWM.ino} (96%) rename motors/{simple_motor_PWM_potenziometer_transistor_diode_2_soluzione/simple_motor_PWM_potenziometer_transistor_diode_2_soluzione.ino => motor_2_PWM_soluzione/motor_2_PWM_soluzione.ino} (92%) rename motors/{simple_motor_PWM_potenziometer__minimum_transistor_diode_3/simple_motor_PWM_potenziometer__minimum_transistor_diode_3.ino => motor_3_PWM_minimum/motor_3_PWM_minimum.ino} (99%) create mode 100644 motors/motor_4_serial/motor_4_serial.ino delete mode 100644 motors/simple_motor_4_serial/simple_motor_4_serial.ino 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/simple_motor_transistor_diode_0/simple_motor_transistor_diode_0.ino b/motors/motor_0/motor_0.ino similarity index 100% rename from motors/simple_motor_transistor_diode_0/simple_motor_transistor_diode_0.ino rename to motors/motor_0/motor_0.ino diff --git a/motors/simple_motor_PWM_transistor_diode_1/simple_motor_PWM_transistor_diode_1.ino b/motors/motor_1_PWM/motor_1_PWM.ino similarity index 100% rename from motors/simple_motor_PWM_transistor_diode_1/simple_motor_PWM_transistor_diode_1.ino rename to motors/motor_1_PWM/motor_1_PWM.ino diff --git a/motors/simple_motor_PWM_transistor_diode_1_soluzione/simple_motor_PWM_transistor_diode_1_soluzione.ino b/motors/motor_1_PWM_soluzione/motor_1_PWM_soluzione.ino similarity index 99% rename from motors/simple_motor_PWM_transistor_diode_1_soluzione/simple_motor_PWM_transistor_diode_1_soluzione.ino rename to motors/motor_1_PWM_soluzione/motor_1_PWM_soluzione.ino index 99854b7..76ef1d8 100644 --- a/motors/simple_motor_PWM_transistor_diode_1_soluzione/simple_motor_PWM_transistor_diode_1_soluzione.ino +++ b/motors/motor_1_PWM_soluzione/motor_1_PWM_soluzione.ino @@ -37,6 +37,5 @@ delay(900); // Pause Risposte: 4. Basta invertire la polarita' dei cavi che vanno al motore - */ diff --git a/motors/simple_motor_PWM_potenziometer_transistor_diode_2/simple_motor_PWM_potenziometer_transistor_diode_2.ino b/motors/motor_2_PWM/motor_2_PWM.ino similarity index 96% rename from motors/simple_motor_PWM_potenziometer_transistor_diode_2/simple_motor_PWM_potenziometer_transistor_diode_2.ino rename to motors/motor_2_PWM/motor_2_PWM.ino index 9a43bcd..670e0b0 100644 --- a/motors/simple_motor_PWM_potenziometer_transistor_diode_2/simple_motor_PWM_potenziometer_transistor_diode_2.ino +++ b/motors/motor_2_PWM/motor_2_PWM.ino @@ -36,7 +36,7 @@ void loop() { 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. + sotto al quale il motore non parta. */ diff --git a/motors/simple_motor_PWM_potenziometer_transistor_diode_2_soluzione/simple_motor_PWM_potenziometer_transistor_diode_2_soluzione.ino b/motors/motor_2_PWM_soluzione/motor_2_PWM_soluzione.ino similarity index 92% rename from motors/simple_motor_PWM_potenziometer_transistor_diode_2_soluzione/simple_motor_PWM_potenziometer_transistor_diode_2_soluzione.ino rename to motors/motor_2_PWM_soluzione/motor_2_PWM_soluzione.ino index 1094bb8..e585201 100644 --- a/motors/simple_motor_PWM_potenziometer_transistor_diode_2_soluzione/simple_motor_PWM_potenziometer_transistor_diode_2_soluzione.ino +++ b/motors/motor_2_PWM_soluzione/motor_2_PWM_soluzione.ino @@ -39,9 +39,7 @@ void loop() { delay(3); // Pause, stabilizza la lettura del Pot } +/* Domande: + 1. Rifare questo esercizio utilizzando la funzione map(). - - - - - + */ diff --git a/motors/simple_motor_PWM_potenziometer__minimum_transistor_diode_3/simple_motor_PWM_potenziometer__minimum_transistor_diode_3.ino b/motors/motor_3_PWM_minimum/motor_3_PWM_minimum.ino similarity index 99% rename from motors/simple_motor_PWM_potenziometer__minimum_transistor_diode_3/simple_motor_PWM_potenziometer__minimum_transistor_diode_3.ino rename to motors/motor_3_PWM_minimum/motor_3_PWM_minimum.ino index d73ec6f..55cc0a6 100644 --- a/motors/simple_motor_PWM_potenziometer__minimum_transistor_diode_3/simple_motor_PWM_potenziometer__minimum_transistor_diode_3.ino +++ b/motors/motor_3_PWM_minimum/motor_3_PWM_minimum.ino @@ -41,9 +41,3 @@ analogWrite(motorPin,LOW) ; 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 -*/ - - - - - - -- 2.39.2