Go Down

Topic: LDR et LEDS comment les programmer? (Read 2780 times) previous topic - next topic

retake77

Bonjour, je viens aujourd'hui même de flasher ma arduino BT, et je suis bien heureux.
Malgré tout il y a des problèmes, toujours des problèmes qurtout quand on débute dans ce type de programmation.
Voici mon projet. J'ai une led sur le port digital 9, que j'utilise en PWM pour la faire varier.
J'ai un capteur de lumière LDR en port analog In 2, que je veux utiliser  pour faire varier cette même Leds...
J'ai tout programmé dans max et çà marche! quand j'approche mon doigt du capteur de lumière je lui enlève de la lumière et la led se met à briller plus fort. quand j'enlève mon doigt la led s'éteind petit à petit...
J'ai essayé de faire un mix de programme, mais c'est pas la fête...
Arduino11 dit : In function 'void loop()':
error: a function-definition is not allowed here before '{' tokenCouldn't determine program size: hardware/tools/avr/bin/avr-size: '/tmp/build31835.tmp/led-light-sensors.hex': No such file


et mon programme qui est un croisement de plusieurs est celui-ci... :
// Fading LED
// by BARRAGAN <http://people.interaction-ivrea.it/h.barragan>

int value = 0;                            // variable to keep the actual value
int ledpin = 9;                           // light connected to digital pin 9
int LDR = 2;       // select the input pin for the LDR
int val = 0;       // variable to store the value coming from the sensor


void setup()
{
pinMode(LDR, INPUT);       // declare the LDR as an INPUT
}

void loop()
{   val = analogRead(LDR);       // read the value from the sensor


{
 for(value = 0 ; value <= 255; value+=5) // fade in (from min to max)
 {
   analogWrite(ledpin, value);           // sets the value (range from 0 to 255)
   delay(90);                            // waits for 30 milli seconds to see the dimming effect
 }
 for(value = 255; value >=0; value-=5)   // fade out (from max to min)
 {
   analogWrite(ledpin, value);
   delay(90);
 }  
}

Mais bien sur rien ne fonctionne!!
Quelqu'un pourrais m'aider s'il vous plaît...
merci et à bientôt
retake77

Vincent

Il y a une { en trop au début de la fonction loop

retake77

Merci à toi pour ta réponse rapide
comme çà tu penses que c'est bon, en tout cas çà ne marche toujours pas..


int value = 0;                            // variable to keep the actual value
int ledpin = 9;                           // light connected to digital pin 9
int LDR = 2;       // select the input pin for the LDR
int val = 0;       // variable to store the value coming from the sensor


void setup()
{
pinMode(LDR, INPUT);       // declare the LDR as an INPUT
}

void loop()
val = analogRead(LDR);       // read the value from the sensor



 for(value = 0 ; value <= 255; value+=5) // fade in (from min to max)
 
 {
   analogWrite(ledpin, value);           // sets the value (range from 0 to 255)
   delay(90);                            // waits for 30 milli seconds to see the dimming effect
 }
 for(value = 255; value >=0; value-=5)   // fade out (from max to min)
 {
   analogWrite(ledpin, value);
   delay(90);
 }

retake77

ça y est j'ai réussi à l'uploader mais çà ne fait pas ce que je veux == les leds blink et le capteur n'est pas pris en compte...
aurais tu une idée?

Vincent

Maintenant il manque une {  ;)
Et tu n'as pas déclaré ledpin comme sortie dans la fonction setup()
Et je pense que val = value.

Code: [Select]

int value = 0;                            // variable to keep the actual value  
int ledpin = 9;                           // light connected to digital pin 9
int LDR = 2;       // select the input pin for the LDR
int val = 0;       // variable to store the value coming from the sensor


void setup()  
{  
pinMode(LDR, INPUT);       // declare the LDR as an INPUT
pinMode(ledpin, OUTPUT);
}  
 
void loop()
{
 
value = analogRead(LDR);       // read the value from the sensor

for(value = 0 ; value <= 255; value+=5) // fade in (from min to max)  
 
 {  
   analogWrite(ledpin, value);           // sets the value (range from 0 to 255)  
   delay(90);                            // waits for 30 milli seconds to see the dimming effect  
 }  
 for(value = 255; value >=0; value-=5)   // fade out (from max to min)  
 {  
   analogWrite(ledpin, value);  
   delay(90);  
 }


retake77

Meci pour la réponse, en fait ce que tu m'as envoyé en code dis encore l'erreur suivante...:
In function 'void loop()':
error: a function-definition is not allowed here before '{' token

Aurais tu une idée du problème là je bloque..
à plus

retake77

de plus :
error: expected unqualified-id before '{' toke


Je ne comprends plus rien...
désolé je suis vraiment débutant...

Vincent

J'ai oublié une } pour fermer le void loop() ;)

Code: [Select]

int value = 0;                            // variable to keep the actual value  
int ledpin = 9;                           // light connected to digital pin 9
int LDR = 2;       // select the input pin for the LDR
int val = 0;       // variable to store the value coming from the sensor

void setup()  
{  
pinMode(LDR, INPUT);       // declare the LDR as an INPUT
pinMode(ledpin, OUTPUT);
}  
 
void loop()
{
 
value = analogRead(LDR);       // read the value from the sensor

for(value = 0 ; value <= 255; value+=5) // fade in (from min to max)  
 
 {  
   analogWrite(ledpin, value);           // sets the value (range from 0 to 255)  
   delay(90);                            // waits for 30 milli seconds to see the dimming effect  
 }  
 for(value = 255; value >=0; value-=5)   // fade out (from max to min)  
 {  
   analogWrite(ledpin, value);  
   delay(90);  
 }
}


Dans Arduino je n'ai plus d'erreur.




retake77

Merci vincent,
Desormais le probleme c'est qu'il ne passe rien; le capteur de lumiere doit certainement recevoir des datas mais il n'agit pas sur les Leds... Comment faire pour programmer çà?
J'ai un autre programme qui vient d'espagne qui marche avec le capteur, lorsque tu lui enlèves de la lumière les leds arretent de clignoter. Lorsqu'il a beaucoup de lumière les leds blink a fond.
Moi je veux seulement varié les leds de 0 à 255 avec le capteur et je n'y arrive pas...
merci
à plus

Vincent

Essaye déjà d'afficher avec le serial port les valeurs lues par Arduino.

retake77

je ne sais pas comment faire çà...

Vincent

Regarde sur le site, la page Reference, y'a des instructions pour communiquer entre l'ordi et Arduino.

http://www.arduino.cc/en/Reference/HomePage

-> Serial Communication

Après regardes dans le learning il doit y avoir des exemples.

retake77

Ca y est çà marche!!!


int potPin = 2;    // select the input pin for the potentiometer
int ledPin = 9;   // select the pin for the LED
int val = 0;       // variable to store the value coming from the sensor

void setup() {
 pinMode(ledPin, OUTPUT);  // declare the ledPin as an OUTPUT
}

void loop() {
 val = analogRead(potPin);    // read the value from the sensor
 val = val/4;                 // convert from 0-1023 to 0-255
 analogWrite(ledPin, val);    // turn the ledPin on
}

retake77

en tout cas si tu oublies de reseter ta arduino Bt avant de flasher çà ne marchera jamais...

retake77

maintenant que j'ai les deux codes j'essaie de les assembler... et je n'y arrive pas encore de probleme d'accolade. Peux tu me dire ce qui ne va pas dans ce code???
merci



/*
* PotDimmer and fading leds at the same time!!
* ---------
*
*/

int potPin = 2;    // select the input pin for the potentiometer
int ledPin1 = 11;   // select the pin for the LED qui va avec le capteur
int ledPin2 = 9;    // light connected to digital pin 9 qui varie toute seule
int val = 0;       // variable to store the value coming from the sensor

void setup() {
 pinMode(ledPin1, OUTPUT);  // declare the ledPin1 as an OUTPUT
 pinMode(ledPin2, OUTPUT);  // declare the ledPin2 as an OUTPUT

}
 // les leds varient enfonction du capteur


void loop() {
 val = analogRead(potPin);    // read the value from the sensor
 val = val/2;                 // convert from 0-1023 to 0-255
 analogWrite(ledPin1, val);    // turn the ledPin on
}
 // suite du programme, les leds fades
{  

 for(val = 0 ; val <= 255; value+=5) // fade in (from min to max)
 {
   analogWrite(ledPin2, val);           // sets the val (range from 0 to 255)
   delay(90);                            // waits for 30 milli seconds to see the dimming effect
 }
 for(val = 255; value >=0; val-=5)   // fade out (from max to min)
 {
   analogWrite(ledPin2, val);
   delay(90);
 }  
}

Go Up