Programme pour LDR
bonjour
qui peut m'aider à comprendre ce programme
pourquoi un sous programme commence par uint_8 ?
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
par exemple la fonction suivante
(en c++ on ne parle pas de sous programme, mais dans ce cas là d'une fonction)
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
Post a Comment