sono nuovo sia del forum che di Arduino ed ho un piccolo progettino in testa per realizzare un cielo stellato in dissolvenza ed una stella cadente che scende per il presepe del prossimo Natale.
Sono riuscito a scrivere entrambe le istruzioni che funzionano regolarmente. Ho bisogno, però, di farle svolgere in tempi sovrapposti (le luci si accendono, parte la stella, si ferma la stella le luci si spengono, etc.).
Ho letto in altri post, della funzione millid, ma non ho minimamente capito come si usa, potete aiutarmi cortesemente?
Vi allego di seguito lo sketch:
#include <Servo.h>
Servo myservo;
int velocitaServo = 80;
Buona sera,
prima di tutto, essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentartiQUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il su citato REGOLAMENTO ...
... poi, in conformità al suddetto regolamento, punto 7, edita (in basso a destra del post, bottone More -> Modify) il tuo post e racchiudi il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra).
Caro Guglielmo, sono riuscito ad utilizzare millis al posto di delay come da te consigliato per farli lavorare contemporaneamente.
Ho ancora bisogno del tuo aiuto:
al termine della fase di accensione del LED ho bisogno che mi rimanga acceso per 30 secondi e viceversa al termine della fase di spegnimento
anche per il servo ho bisogno che rimanga fermo 60 secondi al termine della corsa.
ho provato in diversi modi ma proprio non ci riesco
per favore mi aiuti???
grazie Gabiele
#include <Servo.h>
Servo myservo;
int velocitaServo = 50;
int n = 0;
const int LEDPin1 = 11;
int LED1Value = 0;
int fade = 1;
int fade2 = 1;
int velocita = 20;
unsigned long currentTime;
unsigned long loopTime;
unsigned long currentTime2;
unsigned long loopTime2;
void setup() {
pinMode(LEDPin1, OUTPUT);
currentTime = millis();
loopTime = currentTime;
currentTime2 = millis();
loopTime2 = currentTime2;
myservo.attach(9);
myservo.writeMicroseconds(0);
}
void loop() {
currentTime = millis();
if (currentTime >= (loopTime + velocita)) {
analogWrite(LEDPin1, LED1Value);
LED1Value = LED1Value + fade;
if (LED1Value == 0 || LED1Value == 255) {
fade = -fade;
}
loopTime = currentTime;
}
currentTime2 = millis();
if (currentTime2 >= (loopTime2 + velocitaServo)) {
myservo.write(n);
n = n + fade2;
if (n == 0 || n == 179) {
fade2 = -fade2;
}
loopTime2 = currentTime2;
}
}