Forum: Mikrocontroller und Digitale Elektronik Einlesen von Analogwerten in einen PICAXE-M2+


von Holger K. (pin0815)


Lesenswert?

Moin,
ich versuche verzweifelt in einen PICAXE-18M2+ Analogwerte einzulesen 
und entsprechend der Werte LEDs zu schalten.
Ich beherrsche C und C++, aber dieses BASIC entzieht sich meinem 
Verständnisses.
Ich habe ein Poti an +5V und 0V angeschlossen und mit einem 
Vorwiderstand von 330 Ohm an einen ADC-Eingang gelegt.
Das Proggi sieht so aus:

'Analog-Digital-Wandler
' (C) 09.12.2017 by H. Kellas

main:   readadc C.0,b1         ‘ read value on pin C.1 into variable b1
    if b1<2500 then light1     ‘ if b1 is less than 75 then light 1
    if b1<4000 then light2     ‘ if b1 is less than 175 then light 2

goto     light3         ‘ if b1 is greater than 175 then light 3

light1:   high B.4         ‘ switch on LED 1
      low  B.5         ‘ switch off LED 2
     low  B.6         ‘ switch off LED 3

goto     main           ‘ loop

light2:   low  B.4         ‘ switch off LED 1
    high B.5         ‘ switch on LED 2
    low  B.6         ‘ switch off LED 3

goto     main           ‘ loop

light3:   low B.4         ‘ switch off LED 1
    low B.5         ‘ switch off LED 2
    high B.6         ‘ switch on LED 3

goto     main           ‘ loop

Aber nichts rührt sich.

Ich LIEBE Basic!

Wie definiert man denn Channels bei einem PICAXE, was mache ich falsch, 
verdammt?
Ich weiß auch nicht, wie die Einganswerte (mV, V) definiert werden.

Danke für eure Hinweise!

: Bearbeitet durch User
von Bernd D. (Firma: ☣ ⍵ ☣) (bernd_d56) Benutzerseite


Lesenswert?

PicAxe kenne ich nicht, aber das Problem scheint ja eher hier zu liegen

Holger K. schrieb:
> main:   readadc C.0,b1         ‘ read value on pin C.1 into variable b1
>     if b1<2500 then light1     ‘ if b1 is less than 75 then light 1
>     if b1<4000 then light2     ‘ if b1 is less than 175 then light 2

Da widersprichst du dich, C.0 oder C.1 ?

von void (Gast)


Lesenswert?

PicAxe kenne ich auch nicht, aber das nächste Problem liegt hier:

"The value of an analogue input can be easily copied into a
variable by use of the ‘readadc’ command. The variable
value (0 to 255) can then be tested."

Seite 79 aus http://www.picaxe.com/docs/picaxe_manual1.pdf
von wo du kopiert hast bedeutet schließlich, dass
die Funktion ‘readadc’ nur Werte im Bereich 0 bis 255 (also 8-bit) 
liefert. Testen von Variable b1 gegen 2500 oder gar 4000 ist also 
sinnlos.

von Bernd D. (Firma: ☣ ⍵ ☣) (bernd_d56) Benutzerseite


Lesenswert?

Oh, das habe ich übersehen! ;-)
Bitte schaue dir mal Great Cow BASIC an.
http://gcbasic.sourceforge.net/Typesetter/index.php/Home

Das ist GPL'ed Open Source, unterstützt PIC und AVR, ist ein Compiler, 
unterstützt eine unfassbar große Menge an Peripherie.
Für Analog Verarbeitung ist hier ein guter Einstiegspunkt.
http://gcbasic.sourceforge.net/help/_analog_digital_conversion_overview.html
Besonders hervorzuheben ist die ausgezeichnete Dokumentation, gerade bei 
User Community getriebenen Projekten hapert es ja dort schon mal.

von Holger K. (pin0815)


Lesenswert?

Hallo,
danke für die Tipps.
'die Funktion ‘readadc’ nur Werte im Bereich 0 bis 255 (also 8-bit)
liefert. Testen von Variable b1 gegen 2500 oder gar 4000 ist also
sinnlos.'
Genau :-)! Habe die Befehle mal nachgelesen; mit readadc10 und einem 
Umschreiben des codes läuft alles.
Vielen Dank der Gemeinde!

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.