Forum: Mikrocontroller und Digitale Elektronik Alkoholtester mit Hifle Arduino und Figaro TGS822


von Dan (Gast)


Lesenswert?

Hallo zusammen,
kurz und knagig.
Ich muss ein Alkoholtester mit einem Arduino und einem Figaro TGS822 
bauen. Einen Taster zum Reseten und eine Anzeige mit LED's. Die LED's 
sollen jeweils mit 0,2 Promille steigen. 0,2 Promille die grüne LED, mit 
0,4 Promille soll die erste gelbe LED leuchten, usw.

Die Hardware müsste soweit stimmen, die ich auf einem Steckbrett 
aufgebaut habe. Allerdings bin ich ein Anfänger mit dem Arduino und im 
programmieren!

Pinbelegungen:
7-13 LED-Anzeige
0 Taster für den Reset
A5 für die Ansteuerung des TGS822



Ich habe hier noch mal ein Sketch angefangen, welcher einfach aufgebaut 
ist!

Ich bitte hiermit um Hilfe zur Vervollständigung des Programms(soll sehr 
einfach aufgebaut sein, sodass ich es auch verstehen kann)

int gruen=13;
int gelb1=12;
int gelb2=11;
int rot1=10;
int rot2=9;
int rot3=8;
int rot4=7;

int reset=0;


void setup() {
 pinMode(13, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(11, OUTPUT);
 pinMode(10, OUTPUT);
 pinMode(9, OUTPUT);
 pinMode(8, OUTPUT);
 pinMode(7, OUTPUT);

 pinMode(0, INPUT);

}

void loop() {}

von Tasg (Gast)


Lesenswert?

Auf ein main() verzichtest du?

Woher (aus welcher Variable oder mit welcher Funktion) beziehst du den 
Alkoholpegel? Als was liegt der vor? Unsigned integer, signed integer, 
welche Bitgröße? 8 Bit?

von Bla B. (tobita)


Lesenswert?

Hab zwar noch nie mit einem Alkoholtester gearbeitet aber wie testest du 
das eigentlich^^? Hängst du hackedicht zuhause oder auf der Arbeit 
rum:-D?

von Michael U. (amiga)


Lesenswert?

Hallo,

Tasg schrieb:
> Auf ein main() verzichtest du?

er nutzt die Arduino-IDE, da ist das so schon ok, aber:

> Woher (aus welcher Variable oder mit welcher Funktion) beziehst du den
> Alkoholpegel? Als was liegt der vor? Unsigned integer, signed integer,
> welche Bitgröße? 8 Bit?

Es gibt kein Programm. Er setzt die Pins auf Eingang bzw. Asugang und 
hofft offenbar nun, daß sich jemand mit dem Datenblatt des TGS822 
beschäftugt und ihm dann das Programm dazu schreibt.

Das käme dann in loop() rein, die wird endlos durchlaufen.

Ich vermute aber, das ist etwas zu wenig von seiner Seite.
Wenn er wenigstens schonmal die LEDs leuchten lassen würde und/oder 
versuchen würde, den Sensor auszulesen vielleicht...

Gruß aus Berlin
Michael

von moser (Gast)


Lesenswert?

Das könntest du dir mal anschauen,
https://jenslabs.com/category/electronics/ketosis-detector/

Netterweise hat er auch seinen Arduino Quelltext auf github.

Hauptaufwand ist wohl die Kalibrierung

Led blinken und Code klauen musst du schon selber machen.

Gut geklaut ist halb gelernt ;-)

von Hp M. (nachtmix)


Lesenswert?

Bla B. schrieb:
> wie testest du
> das eigentlich^^? Hängst du hackedicht zuhause oder auf der Arbeit
> rum:-D?

Vielleicht lädt er die örtliche Polizeiwache zu einem 
Kameradschaftsabend ein, und die bringen ihre geeichten Pusteröhrchen 
mit.

von Dan (Gast)


Lesenswert?

Nein so meint ich das nicht, will nicht den kompletten void loop 
rauskopieren. Ich wollte eigl. auch noch was lernen.

@Michael U. (amiga): Ich habe schon einige Sachen mit den LED's gemacht, 
z.B. blinken oder faden lassen, allerdings bringt es mir bei dieser 
Aufgabenstellung nichts. Ich habe halt nur noch nie was mit Sensoren mit 
kombination eines Arduinos was gemacht.


Bla Bla (tobita): Weder noch :P. Bei jedem Fehler beim Kompilieren gibt 
es einen Shot :D


Ich habe das void setup() noch mit "Serial.Begin(9600);" ergänzt um zu 
sehen was der Sensor da macht, allerdings hat das auch nicht so ganz 
funktioniert.

Natürlich habe ich dann auch im void loop()"analogRead(5); 
Serial.print(analogRead(1)); " ergänzt

Ich bitte eigl. nur das mir jemand hilft der Ahnung hat mir mein Sketch 
fertig zu schreiben

von Tasg (Gast)


Lesenswert?

Dan schrieb:
> Ich bitte eigl. nur das mir jemand hilft der Ahnung hat mir mein Sketch
> fertig zu schreiben

Ach so, na wenns weiter nichts ist... Ernsthaft?!

von Dan (Gast)


Lesenswert?

@Tasg (Gast) Ich verstehe nicht was du von mir willst?


Hier mal eine Ergänzung des void loop()

void loop() {
  analogRead(5);
  Serial.println(analogRead(5));

  if (analogRead(5)>=30)
  {
    digitalWrite(gruen, 1);
    digitalWrite(gelb1, 0);
}else{
  digitalWrite(gelb1, 0);
  digitalWrite(gelb2, 0);
  digitalWrite(rot1, 0);
  digitalWrite(rot2, 0);
  digitalWrite(rot3, 0);
  digitalWrite(rot4, 0);
}
{
 if(analogRead(5)>=80)
 {
  digitalWrite(gelb1, 1);
  digitalWrite(gruen, 0);

 }else{
  digitalWrite(gruen, 0);
  digitalWrite(gelb2, 0);
  digitalWrite(rot1, 0);
  digitalWrite(rot2, 0);
  digitalWrite(rot3, 0);
  digitalWrite(rot4, 0);
 }
 if(analogRead(5)>130)
 {
  digitalWrite(gelb2, 1);

 }else{
  digitalWrite(gruen, 0);
  digitalWrite(gelb1, 0);
  digitalWrite(rot1, 0);
  digitalWrite(rot2, 0);
  digitalWrite(rot3, 0);
  digitalWrite(rot4, 0);
 }

von Hurra (Gast)


Lesenswert?

Ich habe damals so angefangen:
Erst die Kommentare, dann den Code. Das kann so aussehen.

//als erstes müssen wir den Sensor auslesen
//Ist der Wert < xxx, muss die rote LED eingeschaltet werden
//ist der Wert zwischen yyy und zzz die gelbe
//ist der Wert größer zzz die grüne

und so weiter.

Ich arbeite immer so, wie früher die Bildchen im Internet geladen 
wurden. Erst grob, dann immer feiner.

Also:
Zuerst eine grobe Idee, was das für eine Funktion haben soll. Hast du 
ja, Sensor lesen und LED anzünden.
Daraus entwickelt man sihc ein Konzept, was man machen muss, um das 
umzusetzen. Das wären die Kommentare oben, natürlich noch verfeinert.
Hat man das, ist der Code schon fast fertig - der Rest ist 
ausformulieren in C-Syntax.
Dann kommt natürlich noch testen :-)

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.