Go Down

Topic: Blink without Delay al posto del led un variabile (Read 955 times) previous topic - next topic

gingardu

volele chiede come posso fare per sostituire il led lampeggiante in Blink without Delay

con una semplice variabile  tipo  al posto di led acceso "variabile"=1  al posto di led spento "variabile"=o

questo per poter risparmiare  un pin in caso servisse per altro, e invece di confrontare == il led acceso

confronto == variabile
Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

uwefed

Non capisco la tua domanda. c'é giá una varbile ledState.

Code: [Select]
/* Blink without Delay
  http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
*/


const int ledPin =  13;      // the number of the LED pin
int ledState = LOW;             // ledState used to set the LED
long previousMillis = 0;        // will store last time LED was updated

long interval = 1000;           // interval at which to blink (milliseconds)

void setup() {
   pinMode(ledPin, OUTPUT);     
}

void loop()
{
  unsigned long currentMillis = millis();

  if(currentMillis - previousMillis > interval) {
     previousMillis = currentMillis; 
   if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;
    digitalWrite(ledPin, ledState);
  }
}

gingardu


ok grazie mille ho risolto con il tuo "indizio"

(purtroppo sembra che  ancora sono cronicamente  afflitto da mancanza di pin nei miei progetti/studio)

sono riuscito a liberare il pin 13 dal lampeggio mettendo questo codice mi ritrovo ledstate che passa da 0 a 1   :)

Code: [Select]


     // the number of the LED pin
int ledState = LOW;             // ledState used to set the LED
long previousMillis = 0;        // will store last time LED was updated

long interval = 1000;           // interval at which to blink (milliseconds)

void setup() {
}

void loop()
{
  unsigned long currentMillis = millis();

  if(currentMillis - previousMillis > interval) {
     previousMillis = currentMillis; 
   if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;
  }
}


se non sbaglio si potrebbe ottenere la stessa cosa portando una variabile a 1 se millis < 1000  e quando millis  e >2000  resettarlo a zero
Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

ƎR



ok grazie mille ho risolto con il tuo "indizio"

(purtroppo sembra che  ancora sono cronicamente  afflitto da mancanza di pin nei miei progetti/studio)

sono riuscito a liberare il pin 13 dal lampeggio mettendo questo codice mi ritrovo ledstate che passa da 0 a 1   :)

Code: [Select]


     // the number of the LED pin
int ledState = LOW;             // ledState used to set the LED
long previousMillis = 0;        // will store last time LED was updated

long interval = 1000;           // interval at which to blink (milliseconds)

void setup() {
}

void loop()
{
  unsigned long currentMillis = millis();

  if(currentMillis - previousMillis > interval) {
     previousMillis = currentMillis; 
   if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;
  }
}


se non sbaglio si potrebbe ottenere la stessa cosa portando una variabile a 1 se millis < 1000  e quando millis  e >2000  resettarlo a zero

si è lo stesso praticamente...
ma non ho capito bene quale è il problema, vuoi fare il blink sul pin 13, o no? così come è il codice l'arduino calcola e basta, non accende e spegne niente...
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

gingardu







se non sbaglio si potrebbe ottenere la stessa cosa portando una variabile a 1 se millis < 1000  e quando millis  e >2000  resettarlo a zero


volevo un "qualcosa"  che varia di stato una volta al secondo  su cui appoggiarmi per fare degli if  senza impegnare uscite di arduino e senza delay
Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...


ƎR

#6
Aug 10, 2012, 03:17 pm Last Edit: Aug 10, 2012, 03:19 pm by ?R Reason: 1
beh prova a fare il resto del codice, poi si vede come è meglio fare...
comunque da quel che ho capito ti servirebbe una cosa così:

Code: [Select]

byte function=0;
unsigned long time=0;

void setup()
{
time=millis();
}

void loop()
{
if(millis()-time>=1000)
{
 time=millis();

 if(function<=4) function++;
 else function=0;
}

switch(function);
{
 case 0:{...}break;
 
 case 1:{...}break;
 
 case 2:{...}break;
 
 case 3:{...}break;
 
 case 4:{...}break;
}
}


con questo codice il programma cambia funzione ogni secondo, una volta fatta la 5^ riparte dalla prima... spero di esserti stato d'aiuto ;)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy