Forum: Mikrocontroller und Digitale Elektronik Spannungsmessgerät mit Display ansteuern


von Tahri D. (doni)


Lesenswert?

Hallo, ich kenne mich nicht solqnge mit dem Programm und habe mal 
versucht das hinzukriegen, hat bei vielen versuchen nicht geklappt.
Also in der Aufgabe steht, dass mit Hilfe  der Arduino-Uno ein 
Spannungsmessgerät zu entwickeln, welches mit einem LCD6X2 ausgestattet 
ist.
Folgende Spannungsbereiche sind zu messen CH0:0......5V
                                          CH1:0......50V

Beim Umschalten der Messbereiche erfolgt mit einem Taster und jeder 
Messbereich ist mit einer roten Leuchtdiode auszustatten, die blinkt, 
wenn der Messbereich überschritten wird.
Ich werde richtig Dankbar, wenn jemand mir dabei hilft.
Hier ein Blick was ich programmiert habe.

1
#include <LiquidCrystal.h> 
2
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 
3
 
4
 
5
  int analogInput = 1; 
6
  float vout = 0.0; 
7
  float CH1 = 0.0; 
8
  float R1 = 9000.0;     
9
  float R2 = 1000.0;   
10
 int value = 0; 
11
   
12
  int SensorValue= 0; 
13
  float temp=0;   
14
  float CH0 =0.0 ; 
15
  float sensorValue = 0; 
16
  float show = 0;     
17
  const int Taster6= 6;
18
  const int Taster7= 7;
19
 
20
void setup(){ 
21
   
22
  pinMode(analogInput, INPUT); 
23
  Serial.begin (9600); 
24
    lcd.begin(16, 2); 
25
    lcd.print("CH1="); 
26
pinMode(sensorValue, INPUT); 
27
  lcd.begin(16, 2); 
28
  lcd.print("CH1="); 
29
 
30
31
   
32
  value = analogRead(analogInput); 
33
  vout = (value * 5.0) / 1024.0; 
34
  CH1 = vout / (R2/(R1+R2));   
35
  lcd.setCursor(4, 0); 
36
  lcd.print(CH1); 
37
  lcd.print("V"); 
38
  lcd.setCursor(0, 2); 
39
 
40
   
41
 
42
  
43
 sensorValue = analogRead(CH0); 
44
show=0.0048828125*sensorValue; 
45
lcd.setCursor(0,2); 
46
lcd.print("CH0="); 
47
lcd.setCursor(4, 1); 
48
lcd.print(show); 
49
  
50
lcd.print("V"); 
51
}
52
   void loop()
53
   {
54
   if ( digitalRead(Taster6) == HIGH)
55
 {
56
    
57
58
  lcd.setCursor(0,0);
59
 lcd.print("CH0=");
60
  delay(1000);
61
}
62
else
63
{
64
  digitalWrite(Taster7, LOW);
65
}
66
 
67
 if ( digitalRead (Taster7)==HIGH)
68
  {
69
    lcd.setCursor(0,0);
70
    lcd.print("CH1=");
71
    delay(2000);
72
  }
73
    else
74
    {
75
      digitalWrite(Taster6, LOW);
76
    }
77
  }

: Bearbeitet durch Moderator
von MaWin (Gast)


Lesenswert?

Tahri D. schrieb:
> Hier ein Blick was ich programmiert habe.

Die Tastenbehandlung in loop ist völlig daneben.

Die in der Aufgabe geforderte Kanalumschaltung gibt es nicht, sondern 
einen myteriösen Sensor-Kanal.

Blinkende LEDs gibt es nirgendwo.

Du solltest wenigstens die Aufgabe lesen und die darin befindlichen 
Elemente umsetzen, und nicht irgendwas von irgendwo ohne Verstand 
zusammenklauen.

Und float würde ich gänzlich weglassen, man kann auch Millivolt in 
edinen int speichern und umrechnen.

von doni (Gast)


Lesenswert?

Das stimmt die LEDS habe ich nicht mitprogrammiert, weil ich nicht damit 
was anfangen konnte.
Auf dem Display steht nur CH0= 0.......5V und CH1=0.......50V.
Und das wars was ich bearbeitet habe.
ich habe vorhin gewiesen,dass ich noch neu bei diesem Arduino, und kenne 
mich so zugagen nicht gut damit.
Es wäre Hilfreich, wenn jemand mir dabei hilft.
Das wäre sehr nett.
Danke

von doni (Gast)


Lesenswert?

Das Problem ist, dass ich nicht mehr viel Zeit habe

von egbert (Gast)


Lesenswert?

doni schrieb:
> Das Problem ist, dass ich nicht mehr viel Zeit habe

Hm, und jetzt sollen andere Deine Klausur retten?

-> Beitrag "Einheitlicher Umgang mit faulen Schülern etc.?"

von doni (Gast)


Lesenswert?

Nein,dass habe ich nicht gemeint.
Faul bin ich auch nicht.
Der Lehrer meinte, dass ich Schritt zu Schritt machen, damit ich auch 
das Programm verstehen kann.

von doni (Gast)


Lesenswert?

Ich weiß, dass es bei den Tastern falsch ist,was ich da rein geschrieben 
habe.

von nemesis... (Gast)


Lesenswert?

doni schrieb:
> Das Problem ist, dass ich nicht mehr viel Zeit habe

Tja, das Schulsystem ist nicht nur eine Institution um was zu lernen,
sondern auch um die Dummen von den Schlauen zu trennen, von den Faulen
(können beides sein) mal ganz abgesehen.
Von Kommentieren eines Quelltextes hast du wohl noch nie was gehört?
Gerade wenn andere sich im Code zurecht finden sollen ist das
unverzichtbar. Meines Wissens wird diese Transparenz nachher auch
in Klausuren bewertet und nicht nur ob das Programm läuft.
Ich bin nicht sicher, aber da du nur eine Hardware angegeben hast,
aber keine Software, gehe ich mal von C aus und da vermisse ich
das Int Main (void) als Startpunkt.
Und noch was: Die meisten Compiler haben so was wie einen Debugger,
mit dem man sein Programm Schritt für Schritt abarbeiten kann.
Man muss sich halt nur mal einen Tag damit beschäftigen. Mein Prof.
hat auch gemeint, den Debugger braucht keiner, aber dem habe ich
was gehustet und mich trotzdem mit beschäftigt.
Vermutlich wollte er sich nur die Zeit damit sparen, damit er sein
Pensum schafft (hat er trotzdem nicht).
Jedenfalls hat das programmieren dann bei mir viel besser geklappt
obwohl ich mehr aus der Hardware komme.

von Tahri D. (doni)


Lesenswert?

Ich verstehe nicht was das mit der Aufgabe zu tun hat.
Man konnte auch netter sein und einfach ignorieren.
Ich hätte mich  gefreut,wenn man einfach Tipps gegeben hätte.

von Piranha (Gast)


Lesenswert?

Tahri D. schrieb:
> Ich verstehe nicht was das mit der Aufgabe zu tun hat.
> Man konnte auch netter sein und einfach ignorieren.
> Ich hätte mich  gefreut,wenn man einfach Tipps gegeben hätte.

Jetzt weißt du was auf dich zukommt, wenn du das mal beruflich machst ;)
Schwäche solltest dann besser keine mehr zeigen, sonst passiert das von 
gerade eben.

von MaWin (Gast)


Lesenswert?

doni schrieb:
> Ich weiß, dass es bei den Tastern falsch ist,was ich da rein geschrieben
> habe.

Warum schreibst du es dann ?

Wenn auf dem Display CH==xxV und gleichzeitig CH1=xxV steht, dann 
braucht man keine Umschaltung der Kanäle mit einem Taster. Aufgabe nicht 
verstanden, 6, setzen. Offensichtlich soll man zu einer Zeit nur einen 
Kanel anzeigen. Auch gehört ein BLINK-Programm zum Allerersten was 
manmit einem Arduino so macht, das sollte nicht zu schwer sein, das 
nicht zu löschen.

Dieses programm tut zwar, was die Aufgabenstellung verlangt, aber ich 
würde dir dauarf 0 Punkte geben: Klar angeschrieben.
1
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
2
uint8_t taste,gedrueckt,kanal,zaehler;
3
uint16_t messwert;
4
uint8_t messeingang[]={MESSEINGANG0,MESSEINGANG1};
5
uint8_t ledausgang[]={LED0,LED1};
6
uint16_t faktor[]={5,50};
7
char text[10];
8
9
setup()
10
{
11
   pinMode(TASTENPIN, INPUT);
12
   pinMode(LED0, OUTPUT);
13
   pinMode(LED1, OUTPUT);
14
   pinMode(MESSEINGANG0, INPUT);
15
   pinMode(MESSEINGANG1, INPUT);
16
   gedrueckt=digitalRead(TASTENPIN);
17
   kanal=zaehler=0;
18
   strcpy(text,"CHn=0.000");
19
}
20
21
loop()
22
{
23
   digitalWrite(ledausgang[kanal],0)
24
   taste=digitalRead(TASTENPIN);
25
   gedrueckt=taste&~gedrueckt;
26
   if(gedrueckt) kanal=1-kanal;
27
   messwert=analogRead(messeingang[kanal])*faktor[kanal];
28
   if(messwert>5000) digitalWrite(ledausgang[kanal],(zaehler&0x40)!=0);
29
   text[2]='0'+kanal;
30
   text[8]='0'+messwert%10;
31
   messwert/=10;
32
   text[7]='0'+messwert%10;
33
   messwert/=10;
34
   text[6]='0'+messwert%10;
35
   messwert/=10;
36
   text[4]='0'+messwert;
37
   lcd.setCursor(0,0);
38
   lcd.print(text);
39
   gedrueckt=taste;
40
   delay(10);
41
   zaehler++;
42
}

von Tahri D. (doni)


Lesenswert?

Tut mir sehr Leid,ich habe die fasche runtergeladen.
Das ist was ich geschafft habe.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

float temp=0;
//int Sensorvalue=0;
float Poti = A0;
float sensorValue = 0;
float show = 0;


void setup() {
Serial.begin (9600);
lcd.begin(16, 2);

}



void loop(){
sensorValue = analogRead(Poti);
show=0.0048828125*sensorValue;
lcd.setCursor(0,0);
lcd.print("Spannung CH0");
lcd.setCursor(0, 1);
lcd.print(show);
delay(500);
lcd.print("V");
lcd.setCursor(0, 2);
delay(500);
}


Ich bin ein bisschen überfordert,da ich alleine die Arbeit mache und 
meine Partnerin sich überhaupt interessiert.
Ich versuches ja das Programm zu verstehen aber irgendwie klappt das 
nicht.

von nemesis... (Gast)


Lesenswert?

Tahri D. schrieb:
> Ich verstehe nicht was das mit der Aufgabe zu tun hat.

Dann hast du nicht aufgepasst oder bist nur lernresistent.

> Man konnte auch netter sein und einfach ignorieren.

Die Realität kann schon mal etwas anstrengend sein, aber meist
hat das einen Grund. Das ist da draußen kein Ponyhof.
Ignoriert wirst du sowieso, wenn deine Frage keinen Sinn macht
und somit keine lösbare Herausforderung ist.

> Ich hätte mich  gefreut,wenn man einfach Tipps gegeben hätte.

Die hast du doch bekommen, aber wenn einem die nicht interessieren,
dann kann man dir nicht helfen. Hier gibts nur Hilfe zur Selbsthilfe,
keine Lösungen.

von Harald W. (wilhelms)


Lesenswert?

Piranha schrieb:

>> Ich verstehe nicht was das mit der Aufgabe zu tun hat.
>> Man konnte auch netter sein und einfach ignorieren.
>> Ich hätte mich  gefreut,wenn man einfach Tipps gegeben hätte.
>
> Jetzt weißt du was auf dich zukommt, wenn du das mal beruflich machst ;)

Dann sagt er zum Kunden: "Moment, ich muss erst im Internet nachfragen,
was ich jetzt tun soll."

Ich frage mich manchmal, ob unsere Welt noch funktioniert, wenn
die Generation, die Elektronik noch ohne Internet gelernt hat,
ausgestorben ist...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.