// loop: Le istruzioni vengono eseguite all'infinito
void loop() {
digitalWrite(led, HIGH); // Mette il PIN del LED in stato acceso
- delay(1000); // Aspetta un secondo (mille millisecondi)
+ delay(200); // Aspetta un secondo (mille millisecondi)
digitalWrite(led, LOW); // Mette il PIN del LED in stato spento
delay(500); // Aspetta mezzo secondo
}
// Pin 13 ha un LED preconfigurato su molte schede Arduino
int led = 13;
-int breve = 200; // Variabile richiambile nel corso dell'esecuzione
-int lunga = 1000;
+int breve = 100; // Variabile richiambile nel corso dell'esecuzione
+int lunga = 400;
// /////////////////
// Setup: eseguita una volta sola all'accensione della scheda
// loop: Le istruzioni vengono eseguite all'infinito
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
+ delay(breve +40); // wait for a second
+ digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
+ delay(breve +40); // wait for a second
+
+ digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(breve); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(breve); // wait for a second
-
+
+ digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
+ delay(breve -40)
+ ; // wait for a second
+ digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
+ delay(breve -40); // wait for a second
+
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(lunga); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
// the LED is bigger than the interval at which you want to
// blink the LED.
- if (millis() > previousMillis + interval) {
+ if (millis() >= previousMillis + interval) {
// Aggiorniamo il contatore previousMillis
- previousMillis = millis();
+ previousMillis += interval ;
+ // previousMillis = millis(); // 3) Cosa succederebbe se fosse
+ // passato piu' di 1ms dall'evento all'azione?
// if the LED is off turn it on and vice-versa:
if (ledState == LOW)
dovranno aggiungere.
2. E' ora agevole cambiare gli intervalli dei due LED?
Modificare gli intervalli dei due led (es 500ms - 320ms)
+
+
+
+ Risposta
+ 3. Si sarebbe introdotto uno slip (ritardo) nei tempi dello sketch
+
*/
by David A. Mellis
modified 8 Feb 2010
by Paul Stoffregen
- modified by eaman
+ modified by Andrea Manni
This example code is in the public domain.
void loop()
{
// Primo LED
- if (millis() > previousMillisA + intervalA) {
- // save the last time you blinked the LED
- previousMillisA = millis();
+ if (millis() >= previousMillisA + intervalA) {
+ // Aggiornimo il riferimento temporale
+ previousMillisA += intervalA;
// if the LED is off turn it on and vice-versa:
if (ledStateA == LOW)
}
// Secondo LED
- if (millis() > previousMillisB + intervalB) {
+ if (millis() >= previousMillisB + intervalB) {
// save the last time you blinked the LED
- previousMillisB = millis();
+ previousMillisB += intervalB;
// if the LED is off turn it on and vice-versa:
if (ledStateB == LOW)
by David A. Mellis
modified 8 Feb 2010
by Paul Stoffregen
- modified by eaman
+ modified by Andrea Manni
This example code is in the public domain.
void loop()
{
// Primo LED
- if (millis() - previousMillisA > intervalA) {
- // save the last time you blinked the LED
- previousMillisA = millis();
+ if (millis() - previousMillisA >= intervalA) {
+ // Timestamp + timestamp = delta temporale
+ previousMillisA += intervalA ;
// if the LED is off turn it on and vice-versa:
ledStateA = !ledStateA;
}
// Secondo LED: contratta
- if (millis() - previousMillisB > intervalB) {
+ if (millis() - previousMillisB >= intervalB) {
digitalWrite(ledB, !digitalRead(ledB));
- previousMillisB = millis();
+ previousMillisB += intervalB ;
}
}
// Funzioni:
void lightLedA () {
- if (millis() > previousMillisA + intervalA) {
+ if (millis() - previousMillisA >= intervalA) {
// save the last time you blinked the LED
- previousMillisA = millis();
+ previousMillisA += intervalA;
// if the LED is off turn it on and vice-versa:
- if (ledStateA == LOW)
- ledStateA = HIGH;
- else
- ledStateA = LOW;
+ ledStateA = !ledStateA ;
// set the LED with the ledState of the variable:
digitalWrite(ledA, ledStateA);
}
void lightLedB () {
long intervalB = 500;
static int ledStateB ; // https://www.arduino.cc/en/Reference/Static
- if (millis() > previousMillisB + intervalB) {
+ if (millis() - previousMillisB >= intervalB) {
// save the last time you blinked the LED
- previousMillisB = millis();
+ previousMillisB += intervalB ;
// if the LED is off turn it on and vice-versa:
- if (ledStateB == LOW)
- ledStateB = HIGH;
- else
- ledStateB = LOW;
+ ledStateB = !ledStateB;
// set the LED with the ledState of the variable:
digitalWrite(ledB, ledStateB);
}
void lightLedA (int interval) {
// Illumina il ledA secondo un intervallo passato come argomento
- if (millis() > previousMillisA + interval) {
+ if (millis() - previousMillisA >= interval) {
// save the last time you blinked the LED
- previousMillisA = millis();
+ previousMillisA += interval;
// if the LED is off turn it on and vice-versa:
- if (ledStateA == LOW)
- ledStateA = HIGH;
- else
- ledStateA = LOW;
+ ledStateA = !ledStateA;
// set the LED with the ledState of the variable:
digitalWrite(ledA, ledStateA);
}
void lightLedB (int interval) {
// Illumina il ledB secondo un intervallo passato come argomento
- if (millis() > previousMillisB + interval) {
+ if (millis() - previousMillisB >= interval) {
// save the last time you blinked the LED
- previousMillisB = millis();
+ previousMillisB += interval;
// if the LED is off turn it on and vice-versa:
- if (ledStateB == LOW)
- ledStateB = HIGH;
- else
- ledStateB = LOW;
+ ledStateB = !ledStateB;
// set the LED with the ledState of the variable:
digitalWrite(ledB, ledStateB);
}
void lightLedA (int interval) {
// Illumina il ledA secondo un intervallo passato come argomento
- if (millis() > previousMillisA + interval) {
+ if (millis() >= previousMillisA + interval) {
// save the last time you blinked the LED
- previousMillisA = millis();
+ previousMillisA += interval;
// if the LED is off turn it on and vice-versa:
ledStateA = !ledStateA ; // Inverti il LED
void lightLedB (int interval) {
// Illumina il ledB secondo un intervallo passato come argomento
- if (millis() - previousMillisB > interval) {
- previousMillisB = millis();
+ if (millis() - previousMillisB >= interval) {
+ previousMillisB += interval;
digitalWrite(ledB, !digitalRead(ledB));
// Leggiamo direttamente il registro di ledB e scriviamo il suo opposto,
// questo ci permette di non dover avere una variabile per tracciare lo stato.
void Update () {
// Illumina il ledB secondo un intervallo passato come argomento
- if (millis() > previousMillis + interval) {
+ if (millis() - previousMillis >= interval) {
// save the last time you blinked the LED
- previousMillis = millis();
+ previousMillis += interval;
// if the LED is off turn it on and vice-versa:
ledState = !ledState ; // Inverti il LED
void Update () {
// Illumina il ledB secondo un intervallo passato come argomento
- if (millis() > previousMillis + interval) {
+ if (millis() - previousMillis >= interval) {
// save the last time you blinked the LED
- previousMillis = millis();
+ previousMillis += interval;
// if the LED is off turn it on and vice-versa:
ledState = !ledState ; // Inverti il LED
struct blinkLed lightLed(struct blinkLed temp) { // dataType tipo_di_struct nome_funzione(argomenti)
// Illumina il ledA secondo un intervallo passato come argomento
- if (millis() > temp.previousMillis + temp.interval) { // gli elementi dello struct sono accessibili tramite l'operatore [punto]
+ if (millis() - temp.previousMillis >= temp.interval) { // gli elementi dello struct sono accessibili tramite l'operatore [punto]
// save the last time you blinked the LED
- temp.previousMillis = millis();
+ temp.previousMillis += temp.interval ;
// if the LED is off turn it on and vice-versa:
temp.ledState = !temp.ledState ; // Inverti il LED
void lightLed(struct blinkLed *temp) { // temp ora e' un pointer e non una struttura autonoma: pass by reference (not by value)
// Illumina il ledA secondo un intervallo passato come argomento
- if(millis() - (*temp).previousMillis > (*temp).interval) { // l'operatore punto ha priorita' maggiore rispetto al pointer asterisco
- (*temp).previousMillis = millis();
+ if(millis() - (*temp).previousMillis >= (*temp).interval) { // l'operatore punto ha priorita' maggiore rispetto al pointer asterisco
+ (*temp).previousMillis += (*temp).interval ;
// if the LED is off turn it on and vice-versa:
temp->ledState = !temp->ledState ; // Forma contratta, deference operator: temp->ledState == (*temp).ledState