Programme pour LDR


bonjour

qui peut m'aider à comprendre ce programme

code: [select]
[code]#define led2 3
#define led4 5
#define ldr a1

void setup()
{
serial.begin(9600);
        pinmode(led2, output);
digitalwrite(led2, low);
pinmode(led4, output);
digitalwrite(led4, low);
        pinmode(ldr, input);

}
void loop()
{
/*the brighter ambient light intensity, darker led*/
uint8_t light_level,duty_cycle;
light_level = getlightlevel();//should 0~7
duty_cycle = light_level*30;  //the duty_cycle of pwm should 0~210

/*the led controled pwm pin should led2 or led4.*/
/*the greater duty_cycle,the brighter led.*/
analogwrite(led2,duty_cycle);
delay(500);
}

/****************************************************************/
/*function:get ambient light level. */
/*parameter:void */
/*return: uint8_t,range 0 7,0 = brightest,7 = darkest */
uint8_t getlightlevel()
{
uint16_t resistance;
uint8_t light_level;
resistance = (uint16_t)getlightintensity();
serial.print("resistance = ");
serial.println(resistance);
if(resistance < 10) light_level = 0;
else if(resistance < 50)light_level = 1;
else if(resistance < 80)light_level = 2;
else if(resistance < 110)light_level = 3;
else if(resistance < 140)light_level = 4;
else if(resistance < 170)light_level = 5;
else if(resistance < 200)light_level = 6;
else light_level = 7;
return light_level;
}
/*********************************************************************/
/*function:get resistance of light sensor */
/*parameter:void */
/*return: float,the resistance of light sensor,its unit kohm */
/* the brighter ambient light intensity,the smaller */
/* resistance. */
float getlightintensity()
{
int sensorvalue = analogread(ldr);
float rsensor;
rsensor=(float)(1023-sensorvalue)*10/sensorvalue;
return rsensor;
}
[/code]

pourquoi un sous programme commence par uint_8 ?

uint8_t est un type, c'est la même chose que byte sur votre arduino --> un nombre non signé tenant sur 8 bits.

donc cette définition
code: [select]
uint8_t getlightlevel()
{
 ....
}
c'est une fonction qui s'appelle getlightlevel qui ne prend pas de paramètres et qui retourne un octet non signé.

par exemple la fonction suivante
code: [select]
float getlightintensity()
{
   ...
}
elle s'appelle getlightintensity, ne prend pas de paramètres et va retourner un nombre à virgule codé sur un float (codé sur 4 octets)


(en c++ on ne parle pas de sous programme, mais dans ce cas là d'une fonction)


Arduino Forum > International > Français (Moderators: jfs, Snootlab) > Programme pour LDR


arduino

Comments

Popular posts from this blog

DHT11 Time out error using v0.4.1library

Sketch upload fails with Java error (___REMOVE___/bin/avrdude)!

Arduino Uno + KTY81/210 temperature sensor