» Advertenties

Zo 5 Februari 2012, 12:40

File #122

De lichtgevoelige weerstand komt van Sparkfun . Samen met de 10K weerstand vormt de LDR een spanningsdeler. De spanning, die door de ADC van de AVR wordt gemeten, is afhankelijk van de hoeveelheid licht. Veel licht staat gelijk aan een lage ADC waarde.

C code -
  1. #define F_CPU 8000000
  2.  
  3. #define LCD_LINES 4
  4. #define LCD_DISP_LENGTH 20
  5.  
  6. #include "s/g.h"
  7. #include "s/rprintf.c"
  8. #include "s/lcd.c"
  9. #include "s/adc.c"
  10. #include "util/delay.h"
  11.  
  12.  
  13. //! main functie, start programma, moet altijd aanwezich zijn
  14. int main(void){
  15.   PORTC = 0xFF;
  16.   DDRC = 0xFF;
  17.  
  18.   uartInit(UART_FULL, 19200);
  19.   rprintfInit(uartSendByte);
  20.   rprintf("UART present\n");
  21.  
  22.   lcdInit(LCD_DISP_ON);
  23.   lcdGotoXY(0,0);
  24.   lcdPuts("ok");
  25.  
  26.   // prescale op 128, en AVCC (5V) als referentie
  27.   adcInit(ADC_P128, ADC_AVCC);
  28.  
  29.   u08 buff[5];
  30.  
  31.   // variabelen die de ADC-waarden bijhouden
  32.   // adc waarden zijn 10bits, dus u16 gebruiken
  33.   u16 adcCell, adcSetpoint;
  34.  
  35.   while(1){
  36.     // photoCell hangt aan PA0
  37.     adcCell = adcGet(0);  
  38.     lcdGotoXY(0,1);
  39.     lcdPuts("cell: ");
  40.     lcdPuts( itoa(adcCell, buff, 10) );
  41.  
  42.     // setpoint pot staat op het adev board op PA7
  43.     adcSetpoint = adcGet(7);
  44.     lcdGotoXY(0,2);
  45.     lcdPuts("setp: ");
  46.     lcdPuts( itoa(adcSetpoint, buff, 10) );
  47.  
  48.     // als de gemeten lichtsterkte lager is dan het setpoint
  49.     // leds PC0..PC3 aan
  50.     if(adcCell >= adcSetpoint){
  51.       outb(PORTC, (inb(PINC) & 0xF0));
  52.     }
  53.     // anders doen we ze uit
  54.     else{
  55.       outb(PORTC, ((inb(PINC) & 0xF0) | 0x0F));
  56.     }
  57.     _delay_ms(500);
  58.   }
  59.  
  60.   return 0;
  61. }


De waarde die de ADC voor de lichtsterkte en het setpoint worden op een LCD getoont, als de ADC waarde van de lichtsterkte hoger is (donker) dan het setpoint, gaan de leds op PC0..PC3 aan.
Nog geen reacties.
Naam
a-z A-Z 0-9 _

 
E-mail
Wordt niet getoont.
  (niet verplicht)
 
Mail sturen als
(optie)
Smoerijf reageerd
Eender wie reageaard
Nooit
 
Mail sturen
(optie)
Enkel mailen bij eerste reactie
Bij elke reactie mailen
 
Reactie
Laatste wijziging: Do 9 April 2009, 11:28