INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Thema geschlossen 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino Wert mit Drucktaster hochzählen und berechnen
07.11.2019, 20:17
Beitrag #1
Information Arduino Wert mit Drucktaster hochzählen und berechnen
Hallo!
Ich habe einen Aruino Uno, ein LCD I2C Display und drei Drucktaster.
Ich möchte zuerst einen Wert zwischen 0,1 und 2 (Geschwindigkeit) durch Drücken des ersten Tasters hochzählen. Danach möchte ich einen zweiten Wert (Schrittlänge) von 28 bis 48 per Tasterdruck hochzählen.
Das Hochzählen soll der beiden Werte soll auf dem Display angezeigt werden (in der ersten Zeile Geschwindigkeit und in der zweiten Zeile Schrittlänge).
Mit diesen beiden Werten will ich dann durch eine Formel den Endwert durch Drücken des dritten Tasters berechnet werden, der dann auf dem Display statt der ersten beiden Werte angezeigt werden soll.
Mein Sketch hat leider irgendwo Fehler, die ich leider nicht finden kann. Vielleicht findet ihr die Fehler. Danke im Vorhinein!


Angehängte Datei(en)
.ino  File_fuer_Forum.ino (Größe: 7,12 KB / Downloads: 8)
Alle Beiträge dieses Benutzers finden
07.11.2019, 20:23 (Dieser Beitrag wurde zuletzt bearbeitet: 07.11.2019 20:25 von Tommy56.)
Beitrag #2
RE: Arduino Wert mit Drucktaster hochzählen und berechnen
Warum fängst Du dazu ein neues Thema an?

Ansonsten stelle Deinen Sketch bitte in Codetags. So ist er auch auf portablen Geräten lesbar.
Wie das geht, steht hier.
Das kannst Du auch noch nachträglich ändern.

"Hat irgendwo noch Fehler" ist eine Nullaussage. Beschreibe bitte konkret, was geht und was nicht.

@Mod: Bitte mit dem anderen Thread zusammenführen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
07.11.2019, 21:30
Beitrag #3
RE: Arduino Wert mit Drucktaster hochzählen und berechnen
Zu Beginn soll in der ersten Zeile "V: km/h" und in der zweiten Zeile "SL: cm" stehen - das geht.
Wenn ich die Taster 1 und 2 drücke, sollen die Werte hochgezählt werden, das geht bei beiden nicht. Es erscheinen zwar Werte, die aber falsch sind (es sind ewig lange Kommastellen). Diese sollten eigentlich bei der Geschwindigkeit von 0,1 - 2 (von Taster 1) und bei der Schrittlänge von 28 - 48 (von Taster 2) hochgezählt werden.
Das Berechnen des Endwertes durch die Formel durch Drücken des dritten Tasers funktioniert gar nicht - hier tut sich gar nichts.

Code:
#include <LiquidCrystal_I2C.h>

#define BAUDRATE 9600

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

int geschwindigkeit;
int taster1=4;
int taster2=7;
int taster3=8;
int tasterstatus1=0;
int tasterstatus2=0;
int tasterstatus3=0;
int schrittanzahl=348;
int i;
int j;
int zeit=300;
int v_evaluiert =0;
int j_v=0;
int schrittanzahl_01=(schrittanzahl/20); // schrittanzahl für 0,1 km/h eingeben
int schrittanzahl_02=(schrittanzahl/20)*2; // schrittanzahl für 0,2 km/h eingeben
int schrittanzahl_03=(schrittanzahl/20)*3; // schrittanzahl für 0,3 km/h eingeben
int schrittanzahl_04=(schrittanzahl/20)*4; // schrittanzahl für 0,4 km/h eingeben
int schrittanzahl_05=(schrittanzahl/20)*5; // schrittanzahl für 0,5 km/h eingeben
int schrittanzahl_06=(schrittanzahl/20)*6; // schrittanzahl für 0,6 km/h eingeben
int schrittanzahl_07=(schrittanzahl/20)*7; // schrittanzahl für 0,7 km/h eingeben
int schrittanzahl_08=(schrittanzahl/20)*8; // schrittanzahl für 0,8 km/h eingeben
int schrittanzahl_09=(schrittanzahl/20)*9; // schrittanzahl für 0,9 km/h eingeben
int schrittanzahl_1=(schrittanzahl/20)*10; // schrittanzahl für 1 km/h eingeben
int schrittanzahl_11=(schrittanzahl/20)*11; // schrittanzahl für 1,1 km/h eingeben
int schrittanzahl_12=(schrittanzahl/20)*12; // schrittanzahl für 1,2 km/h eingeben
int schrittanzahl_13=(schrittanzahl/20)*13; // schrittanzahl für 1,3 km/h eingeben
int schrittanzahl_14=(schrittanzahl/20)*14; // schrittanzahl für 1,4 km/h eingeben
int schrittanzahl_15=(schrittanzahl/20)*15; // schrittanzahl für 1,5 km/h eingeben
int schrittanzahl_16=(schrittanzahl/20)*16; // schrittanzahl für 1,6 km/h eingeben
int schrittanzahl_17=(schrittanzahl/20)*17; // schrittanzahl für 1,7 km/h eingeben
int schrittanzahl_18=(schrittanzahl/20)*18; // schrittanzahl für 1,8 km/h eingeben
int schrittanzahl_19=(schrittanzahl/20)*19; // schrittanzahl für 1,9 km/h eingeben
int schrittanzahl_2=(schrittanzahl/20)*20; // schrittanzahl für 2 km/h eingeben

void setup()
{
Serial.begin(BAUDRATE);
lcd.begin();
lcd.backlight();

}

void loop()
{
tasterstatus1=digitalRead(taster1);
  lcd.setCursor(0, 0);
  lcd.print("V: ");
  
if (tasterstatus1 == HIGH)
{

  for(i=0.1;i<2;i++)
  {
    lcd.print(i);
    lcd.print('km/h');
      
  }
  i=i+0.1;
    
    if (i > 2)
    {i=0.1;}
}  

tasterstatus2=digitalRead(taster2);
lcd.setCursor(0, 1);
  lcd.print("SL: ");
  
if (tasterstatus2 == HIGH)
{    
  for(j=1;i<20;j++)
  {
    j_v=j+27;
    lcd.print(j_v);
    lcd.print('cm');
  }
  j=j+1;
  if (j > 20)
    {j=1;}
}

tasterstatus3=digitalRead(taster3);
if (tasterstatus3 == HIGH)
{

lcd.begin();
lcd.backlight();

if(i==0.1)
{
  v_evaluiert=(((j*schrittanzahl_01)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==0.2)
{
  v_evaluiert=(((j*schrittanzahl_02)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==0.3)
{
  v_evaluiert=(((j*schrittanzahl_03)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==0.4)
{
  v_evaluiert=(((j*schrittanzahl_04)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==0.5)
{
  v_evaluiert=(((j*schrittanzahl_05)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==0.6)
{
  v_evaluiert=(((j*schrittanzahl_06)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==0.7)
{
  v_evaluiert=(((j*schrittanzahl_07)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==0.8)
{
  v_evaluiert=(((j*schrittanzahl_08)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==0.9)
{
  v_evaluiert=(((j*schrittanzahl_09)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==1)
{
  v_evaluiert=(((j*schrittanzahl_1)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
if(i==1.1)
{
  v_evaluiert=(((j*schrittanzahl_11)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==1.2)
{
  v_evaluiert=(((j*schrittanzahl_12)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==1.3)
{
  v_evaluiert=(((j*schrittanzahl_13)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==1.4)
{
  v_evaluiert=(((j*schrittanzahl_14)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==1.5)
{
  v_evaluiert=(((j*schrittanzahl_15)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==1.6)
{
  v_evaluiert=(((j*schrittanzahl_16)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==1.7)
{
  v_evaluiert=(((j*schrittanzahl_17)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==1.8)
{
  v_evaluiert=(((j*schrittanzahl_18)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==1.9)
{
  v_evaluiert=(((j*schrittanzahl_19)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}
if(i==2)
{
  v_evaluiert=(((j*schrittanzahl_2)/30000)*3.6);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("v bei ");
  lcd.print(j);
  lcd.print("cm SL:");
  lcd.setCursor(0, 1);
  lcd.print(v_evaluiert);
}

}
}
}
Alle Beiträge dieses Benutzers finden
07.11.2019, 21:34
Beitrag #4
RE: Arduino Wert mit Drucktaster hochzählen und berechnen
(07.11.2019 20:17)Pauli33_student schrieb:  ....
Ich habe einen Aruino Uno...

Ein solches Derivat ist uns nicht bekannt - Thema geschlossen.
bk Moderator

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
07.11.2019, 21:35 (Dieser Beitrag wurde zuletzt bearbeitet: 07.11.2019 21:37 von Tommy56.)
Beitrag #5
RE: Arduino Wert mit Drucktaster hochzählen und berechnen
Ok, jetzt kann man ihn lesen. --> Der kann so nie funktionieren.

Mach Dich mal schlau über die Variablentypen von C++. Da hast Du schon grobe Fehler drin.

Fließkommawerte in Vergleichen gehen erfahrungsgemäß zu 90% schief.
Für solche Massenverarbeitungen, die eigentlich alle das gleiche machen, nur 1 Zahl ist anders nimmt man Arrays und evtl. Funktionen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Thema geschlossen 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  SD-Karte Ersten und Letzten wert anzeigen Luis90 1 74 12.11.2019 12:23
Letzter Beitrag: Tommy56
  Werte in Arduino mittels Drucktaster eingeben und mittels Formel Wert berechnen Pauli33_student 5 194 04.11.2019 13:20
Letzter Beitrag: Peter_hno3
  PWM springt bei einem bestimmten Wert auf High fingerpfeifer 18 892 16.10.2019 22:31
Letzter Beitrag: fingerpfeifer
  Wert von einem Arduino zu einem zweiten Arduino senden Thorsten_S 9 560 14.10.2019 14:48
Letzter Beitrag: Thorsten_S
  BMP280 - Höhe berechnen Herby007 6 645 11.08.2019 11:06
Letzter Beitrag: Tommy56
  Steigenden und/oder Wert erkennen - wie macht man das? Gelegenheitsbastler 2 518 24.01.2019 11:52
Letzter Beitrag: Tommy56
  mehrdim. Arrays wert der ersten dimension ausgeben sepp01 19 1.951 14.10.2018 06:55
Letzter Beitrag: sepp01
  Wert durchsuchen und in einen String packen Juljano 8 1.611 23.07.2018 07:13
Letzter Beitrag: amithlon
  Int ändert bei Übergabe seinen Wert?? da_user 30 4.439 15.04.2018 22:12
Letzter Beitrag: da_user
Star BME680 IAQ Wert auslesen Bitklopfer 9 7.974 18.03.2018 02:33
Letzter Beitrag: Wampo

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste