Problem med potentiometer
Postat: 15 maj 2007, 21:16:05
Hejsan!
Har ett litet problem. Jag vill läsa av en potentiometer och sedan mata ut dess värde på en LCD. Har följande kod:
Men det händer inget när jag skjuter på potentiometern. Har testat att koppla på alla möjliga sätt. Jag använder en STK500 och har testat med att mata potentiometern från kortet och från annan spänningkälla. Men displayen visar bara ?V hur jag än gör... Något tips till en vilsen kille?
Tack på förhand!
fjodorr
Har ett litet problem. Jag vill läsa av en potentiometer och sedan mata ut dess värde på en LCD. Har följande kod:
Kod: Markera allt
#include <stdio.h>
#include "lcd4.h"
#include "io_atmega16.h"
void wait_milliseconds(int);
/*=== main ==============================================
Programmet läser av en potentiometer som är ansluten till den
analoga ingången kanal 0. Värdet skrivs sedan ut på en LCD display.
========================================================*/
int main(void)
{
lcd4 theDisplay; //Structure variable
char s[20];
int value;
double voltage;
// Init of the LCD-display
lcd4_init(&theDisplay,&PORTC,&DDRC,4000,50);
// Init of the ADC
ADCSRA = (ADCSRA & 0xF8) ; //Prescale factor for the A/D
ADCSRA = ADCSRA | (1<<ADEN); //Enable of the A/D
while ( 1 )
{
// 1. READ OF THE ANALOG INPUT CHANNEL 0
ADMUX = (ADMUX & 0xE0) | 0; // Analog input channel 0
ADCSRA = ADCSRA | (1<<ADSC); //A/D start of conversion
while ( (ADCSRA & (1<<ADSC)) != 0 ) //Wait until conversion is done
;
value = (unsigned int) ADC; //10 bits value, max value 1023 and min value 0
// 2. CONVERSION OF THE 10 BITS VALUE (int) TO VOLTAGE VALUE (float)
voltage = 5.0*(value / 1023.0);
// 3. WRITE OF THE VOLTAGE VALUE ON THE LCD-DISPLAY
sprintf( s, "%2.1fV", voltage );
lcd4_cup_row1(&theDisplay);
lcd4_write_string( &theDisplay, s );
}
return 0;
}
Tack på förhand!
fjodorr