Pages: [1]   Go Down
Author Topic: Blink without Delay al posto del led un variabile  (Read 596 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged


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

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20298
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:
/* 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);
  }
}
Logged

Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


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   smiley

Code:

     // 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
Logged


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

Camisano Vicentino (VI), Italy
Offline Offline
God Member
*****
Karma: 4
Posts: 952
ƎR like no other.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset


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   smiley

Code:

     // 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...
Logged

Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset





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
Logged


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

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 104
Posts: 6626
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Prova con la nuova libreria LeOS di Leo.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Camisano Vicentino (VI), Italy
Offline Offline
God Member
*****
Karma: 4
Posts: 952
ƎR like no other.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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 smiley-wink
« Last Edit: August 10, 2012, 08:19:30 am by ƎR » Logged

Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Pages: [1]   Go Up
Jump to: