Analoge Eingänge liefern immer selben Wert

Hallo Liebe Community,

Ich habe folgendes Problem:
Ich möchte ein einfaches Blinken einer LED so steuern, dass es je nach dem ob der Wert höher oder kleiner ist die LED schneller oder langsamer blinkt. (also im Prinzip das einfachste Beispiel welches es gibt)

Aber die LED blinkt immer gleich schnell selbst wenn ich den Analogen Eingang auf +5V oder GND lege.
Sind meine Eingänge kaputt oder habe ich einen falschen Code verwendet. (Habe es aber genau so gemacht wie in diesem Link: https://www.arduino.cc/en/tutorial/potentiometer)

Ich hoffe ihr könnt mir helfen,

Liebe Grüße
flar2000

Hi

Klick-Link

Hast Du wirklich GENAU diesen Aufbau?
Und: GENAU den Beispiel-Sketch?
DANN muß Das auch funktionieren.

Denke, Du hast Dich vll. beim Poti-Pin vertan.
Das auf dem Bild ist KEIN Uno, wobei Du auch nicht schreibst, was Du benutzt.

MfG

Ja ich habe genau den Aufbau und verwende auch denn UNO

Hast du schon mal versucht mit Atmel Studio zu debuggen...
Das wäre jetzt mein nächster Schritt gewesen

Hi

Ich wüsste nicht, wie ich mit dem Arduino-Zeug ins Atmel-Studio komme ... Assembler habe ich darin aber schon zur Genüge 'gespielt' :wink:
Wie debugt man das hier per Atmel-Studio? (ernst gemeinte Frage!!)

Passen die Pins in Deinem Sketch mit den angeschlossenen Drähten überein?
Der im Link angegebene Arduino ist KEIN Uno, weshalb hier das Bild vom bei Dir nötigen Aufbau abweichen kann - hier ist 'Programmieren' gefragt, nicht nur C&P - also, verstehst Du, was der Code machen soll?
Ist die LED ggf. nur falsch herum verbaut, daß Diese in Sperrrichtung betrieben wird? (bis ca. 6V kein Problem, darüber geht die LED hops, leuchten tut Sie in beiden Fällen, also auch unter 6V, aber nicht).

Aufgabe:
Nehme Dein Handy, mache ein Foto, pack's hier rein.
Nehme Deinen Sketch und setze Diesen hier in Code-Tags (Antworten durch Klick auf 'Reply').

MfG

Hey,

habe eigentlich einiges an Erfahrung in unterschiedlichen Sprachen daher verstehe ich den Code eigentlich gut...

So darunter noch den Code ich hoffe es hilft mit den Bildern kämpf ich gerade noch....

int sensorPin=1;
int ledPin=13;
int sensorValue=0;

void setup() {
pinMode(ledPin,OUTPUT);  
}

void loop() {
sensorValue=analogRead(sensorPin);
delay(sensorValue);
digitalWrite(ledPin,HIGH);
delay(sensorValue);
digitalWrite(ledPin,LOW);
}

Hast du Atmel Studio installiert und ein klein wenig Erfahrung damit?

Das mit den Bildern ist so ne Sache... lässt sich gerade nicht lösen weil die Speichergröße zu groß ist...

Aber da ich auszubildener Dipl.Ing. in Elektronik und technischer Informatik bin glaube ich das es richtig ist

Setze Deinen Sketch bitte in Codetags (</> oben links im Foreneditor), damit sie von allen lesbar sind. Bilder kann man verkleinern. Erst als Anhang dran und im 2. Schritt mit diesem Link als IMG einbinden.

Die Pins 0 und 1 zu benutzen ist generell keine gute Idee, da diese für die Programmierung des Arduino benötigt werden.

Außerdem ist der Pin 1 kein analoger Pin. Schau Dir mal das Pinlayout deines Arduino an.

Du wolltest wohl eher Pin A1 benutzen.

Gruß Tommy

ok danke merke es mir fürs nächste mal...

wenn ich den Befehl analogRead verwende müsste der Arduino doch logischerweise sofort A1 verwenden...?

Tommy56:
Außerdem ist der Pin 1 kein analoger Pin. Schau Dir mal das Pinlayout deines Arduino an.

Du wolltest wohl eher Pin A1 benutzen.

?

int analogRead(uint8_t pin)
{
// --- schnipp ---

 if (pin >= 14) pin -= 14; // allow for channel or pin numbers

//  --- schnapp ---
}

wenn ich den Befehl analogRead verwende müsste der Arduino doch logischerweise sofort A1 verwenden...?

analogRead(15);
analogRead(A1);
analogRead(1);

Auf dem UNO: Alles das gleiche.

Tommy56:
Die Pins 0 und 1 zu benutzen ist generell keine gute Idee, da diese für die Programmierung des Arduino benötigt werden.

Außerdem ist der Pin 1 kein analoger Pin. Schau Dir mal das Pinlayout deines Arduino an.

Du wolltest wohl eher Pin A1 benutzen.

Gruß Tommy

Da bringst Du einiges durcheinander.

D0 und D1 sind für die serielle Schnittstelle. Während man die analogen Eingänge im analogRead() ruhig mit 0 bis 5 durchnumerieren kann.
Grüße Uwe

flar2000:
wenn ich den Befehl analogRead verwende müsste der Arduino doch logischerweise sofort A1 verwenden...?

Das tut er auch.
Versuch mal den eingelesenen Wert über die serielle Schnittstelle im Terminal der IDE anzuzeigen. So siehst Du was gelesen wird. Hast Du den richtigen analogen Eingang verwendet?
im Link https://www.arduino.cc/en/tutorial/potentiometer wird A2 verwendet.

Grüße Uwe

Wie debugt man das hier per Atmel-Studio? (ernst gemeinte Frage!!)

-->Grundvoraussetzung ist dafür ein ATMEL-Debugger... nur mit dem Uno und nem USB-Kabel läuft das nicht :wink:

Ich habe das mal angetestet, aber ich finde, dass die serielle Schnittstelle für derartige Zwecke besser geeignet ist (da bequemer). Der Debugger ist eher für Sachen, wenn man viele verschachtelte Funktionen hat und tief in Libs rumwühlen muss.

Hallo,

vielen Dank für eure Hilfe keine Ahnung was der Fehler war hab heute morgen den Laptop gestartet und das Programm auf den (nicht veränderten) Aufbau geladen....
Und es hat funktioniert...

Aber trotzdem würde es mich interessieren wie ihr das mit der seriellen Schnittstelle macht das wäre äußerst praktisch....

Liebe Grüße,
flar2000

Also ich habe am Anfang meiner Programme immer

//#define DEBUG
#ifdef DEBUG
  #define debugBegin(...) Serial.begin(__VA_ARGS__);while(!Serial)
  #define debugPrint(...) Serial.print(__VA_ARGS__)
  #define debugPrintln(...) Serial.println(__VA_ARGS__)
#else
  #define debugBegin(...)
  #define debugPrint(...)
  #define debugPrintln(...)
#endif

und im Setup:
debugBegin(9600);

Dann im Code an jeder relevanten Stelle die Ausgabe bestimmter Werte oder Zeilen, z.B.
debugPrintln(F("Nachtmodus gestartet"));

Ganz oben im Code bestimmst Du über #define DEBUG, ob Du die Ausgaben nutzen möchtest oder nicht (auskommentieren sonst)

So ähnlich sieht das bei mir auch aus.

Wobei ...
(habe mal deinen Code verändert)

//#define DEBUG Serial1
#ifdef DEBUG
#define debug(...) DEBUG.print(VA_ARGS)
#define debugln(...) DEBUG.println(VA_ARGS)
#else
#define debug(...)
#define debugtln(...)
#endif

man so jeden (printfähigen) Stream verwenden kann