Ergebnis einer Rechnung auf LCD Arduino

OP (Firma: Trafo AG) #6339995
Guten Tag Zusammmen
Es liegt ein Problem vor bei meinem Arduino Code vor.
Ich möchte den Strom mit Hilfe eines Shunts Widerstand den Strom 
berechnen und auf einem LCD anzeigen lassen, doch ich weiß nicht wie ich 
die Lösung anzeigen kann. Im Internet habe ich Beispiele gefunden mit 
serial.Print, was ja theoretisch das gleiche Prinzip wäre wie lcd.Print 
doch es funktioniert leider nicht und es taucht ein Fehlercode auf.
Fehlercode:"`VShunt`" was not declared in this scope"
Würde mich sehr freuen, wenn ihr mir weiterhelfen könnten!
1
#include <LiquidCrystal.h>
2

3

4
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
5
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
6
int LED = 9;
7
int Shunt = A0;
8

9
void setup() {
10

11
  pinMode(LED,OUTPUT);
12

13
}
14

15
void loop() {
16
    
17
  lcd.begin(16, 1);
18

19
  lcd.print ((VShunt / 202)/ 200);
20
  lcd.print ("mA");
21
  pinMode(LED,OUTPUT);
22
    digitalWrite(LED, HIGH);
23
    int VShunt = analogRead(Shunt); // wird von 1-1023 angezeigt!
24
  
25
}
Fehlercode
Elektro F. schrieb:
> Vielen Dank hat geklappt, aber jetzt zeigt es einfach 0mA an wisst Ihr
> an was das liegen könnte?

Also ich würde das alles erstmal besser strukturieren und mir ein C/C++
Buch zur Seite nehmen...das mit der Variable war ein echt unnötiger 
Fehler.

Ich weis zwar nicht was du mit der LED machen möchtest,
aber ansich fang doch ganz am Anfang an und versuch dann den Wert 
umzurechnen:
1
#include <LiquidCrystal.h>
2

3
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
4
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
5
int LED = 9;
6
int Shunt = A0;
7

8
void setup() {
9
  pinMode(LED,OUTPUT);
10
}
11

12
void loop() {
13
    int VShunt;
14
    
15
    // Wertebereich: 0-1023
16
    VShunt = analogRead(Shunt);
17
    
18
    lcd.begin(16, 1);
19
    
20
    lcd.print ("AD-Value:");
21
    lcd.print (VShunt);
22

23
    // Nun AD-Value in mA umrechnen
24
    // ...
25
}
Gast
Elektro F. schrieb:
> Vielen Dank für die Antwort, doch das Problem ist ich weiss nicht wie
> ich es in Volt umwandle. Da es irgendwie keine Kommastellen gibt.

Du kannst in dem Programm "sagen", dass ein Wert eine Kommazahl "ist".

Das nennt man auf Deutsch "deklarieren" und auf Englisch "to declare". 
Das Wort "declared" aus der Fehlermeldung ist die Form des Wortes, die 
angibt, dass etwas deklariert wurde, - "declarED", - die 
Vergangenheitsform.

Die Zeile
1
int Shunt;
ist eine solche Deklaration.

Die Zeile
1
float Voltage;
ist die Deklaration einer "Kommazahl". "Float" bedeutet 
"Fliesskommazahl"; dass ist das selbe wie eine Kommazahl.
1
void loop()
2
{
3
    int ad_value;
4
    int mV;
5
    int mA;
6
    
7
    // Wertebereich: 0-1023
8
    ad_value = analogRead(Shunt);
9
    
10
    /**
11
    * AD-Value nach mV normieren, falls Vmax = 5V ist.
12
    *    0 = 0,000 V
13
    * 1023 = 5,000 V
14
    *
15
    * Falls du kein float nutzen willst:
16
    * Erst in µV rechnen: (5 * 1000000)
17
    * dann zu mV:         / 1000
18
    *
19
    * Nun hast es in mV vorliegen.
20
    */
21
    mV = (5 * 1000000) / 1023 * ad_value / 1000;
22
    Serial.println(mV, DEC);
23
    
24
    /**
25
    * Annahme, Rshunt = 0,1 Ohm
26
    *
27
    * Eigentlich:     mA = mV / 0.1f;
28
    * Aber wir möchten ja kein float.
29
    */
30
    mA = mV * 10;
31
    Serial.println(mA, DEC);
32
    
33
    // Ausgabe auf dem LCD könntest du dann so machen:
34
    lcd.print("I = ");
35
    lcd.print(mA / 1000);
36
    lcd.print(",");
37
    lcd.print(mA % 1000);
38
    lcd.print("A");
39

40
    delay(1000);
41
}
Gast
Adam P. schrieb:
> // Ausgabe auf dem LCD könntest du dann so machen:
>     lcd.print("I = ");
>     lcd.print(mA / 1000);
>     lcd.print(",");
>     lcd.print(mA % 1000);
>     lcd.print("A");

Gleich kommt der OP und beschwert sich, dass er nur "A" auf dem Display 
lesen kann.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.