hmm, sehr "arger" C-Kauderwelsch (schlecht zu lesen):
Wolfgang schrieb:
> Das kommt drauf an, was dein Feuchtigkeitssensormodul für Spannungen
> ausgibt und ob die Werte abhängig oder unabhängig von der
> Versorgungsspannung sind.
Recht gebe (ohne jetzt die Initialisierungs- und Leseroutinen des
ATmega32 zu überprüfen) !
Folgende Fehler zudem:
Du hast innerhalb deiner Main eine Funktion
void ADC_Init(void)
... rufst diese aber nirgendwo auf !!! Von daher ist dein ADC NICHT
initialisiert !!!
Du hast weiterhin innerhalb deiner Main eine Funktion
uint16_t ADC_Read( uint8_t channel )
... rufst diese aber ebenfalls nirgendwo auf !!!
Mir scheint, als hättest du diese beiden Funktionen irgendwoher kopiert,
in deinen Editor eingefügt ohne zu verstehen, dass diese Funktionen
"Unterprogramme" sind (die sicherlich außerhalb der Main stehen
sollten)...
Irgendwie in dieser Art sollte dein Programm aussehen:
1 | #define F_CPU 1000000
|
2 | #define ADATE 5
|
3 | #include <avr/io.h>
|
4 | #include <util/delay.h>
|
5 | #include <stdlib.h>
|
6 | #include "lcd-routines.h"
|
7 |
|
8 |
|
9 | void ADC_Init(void){
|
10 |
|
11 | // Dein Initialisierungscode steht hier
|
12 | }
|
13 |
|
14 | uint16_t ADC_Read( uint8_t channel ){
|
15 |
|
16 | // Der Code zum Auslesen des ADC steht hier
|
17 | }
|
18 |
|
19 | int main (void){
|
20 | char outpt[16]; // dein Textpuffer der einen String aufnehmen soll
|
21 |
|
22 | uint16_t lu; // deine Variable fuer deine Luft
|
23 |
|
24 | lcd_clear(); // wahrscheinlich nimmt lcd_clear auch eine
|
25 | // Initialisierung vor, ansonsten wuerdest du auf
|
26 | // dem Display auch nichts sehen. Wenn es ein
|
27 | // lcd_init() gibt, waere dieses aufzurufen besser
|
28 | ADC_Init(); // initialisiert deinen ADC
|
29 | while(1)
|
30 | {
|
31 | // hier stehen jetzt erst mal Textausgaben fuers Display
|
32 |
|
33 | lu= ADC_Read(0); // hier musst du wissen, an welchen ADC-Pin du den
|
34 | // Sensor angeschlossen hast. lu wird der Wert der
|
35 | // Funktion zugewiesen
|
36 | itoa(lu, outpt,10); // Wandlung einer Integervariable in einen AsciiZ
|
37 | // String
|
38 |
|
39 | // hier steht dann die Stringausgabe deines Displays
|
40 | }
|
41 | }
|
(Das ganze jetzt ohne auf Fehler zu prüfen... denn deine Struktur im
Programm ist meiner Meinung nach grundsätzlich falsch). Du schreibst
Funktionen (Unterprogramme) um diese später aufzurufen. Hier
unterscheidest du Funktionen die "einfach nur etwas machen" ohne etwas
"zurückzuliefern" : void (steht für nullkommagarnixgibtszurück") und
Funktionen die einen Rückgabewert eines bestimmten Typs haben (in deinem
Fall liefert ADC_Read etwas vom Typ int zurück... diese Rückgabe kannst
du einer Variablen zuweisen).
Vllt. solltest du (ohne es so krass wie Karl M. zu sagen) die einmal ein
paar einfache Programme ansehen um zu ergründen wie die Struktur eines
C-Programms aussehen kann).
Gute Nacht,
Ralph