Hallo,
gibt jemanden aus der Umgebung in Köln sich mit dem Programmieren mit einem Arduino auskennt und wäre bereit für ein paar nachhilfe stunden?
genaueres würde ich dann mit der Person abklären.
Hallo,
gibt jemanden aus der Umgebung in Köln sich mit dem Programmieren mit einem Arduino auskennt und wäre bereit für ein paar nachhilfe stunden?
genaueres würde ich dann mit der Person abklären.
Gut gemeinter Tipp. Dann würde ich spezifizieren, für was du genau einen Experten suchst. Reichen dir keine tutorials aus dem Netz?
Oder ein Starter Kit mit Handbuch?
Ich versuche es dann mal so.
Ich bin absoluter Leihe. Mein Ziel ist es, eine LED über ein Poti zu an zu steuern. So wie ich bis jetzt heraus lesen konnte, kann der Poti Werte von 0-1023 raus geben. Nun wollte ich diese Werte über die "map ()" Funktion in 16 Intervalle unterteilen. und In jedem einzelnem Intervall, soll die LED für ne bestimmte Zeit leuchten.
Ich habe versucht einen Code aus den Beispielprogrammen zusammen zu basteln aber irgendwie tut es nicht was es soll.
int eingang = A0;
int LED = 13;
int sensorwert = 0;
void setup()
{
pinMode (LED, OUTPUT);
}
void loop()
{
sensorwert = analogRead(eingang);
int sensorwert = map(sensorwert, 0, 1023, 1, 16);
if (sensorwert == 1) {
digitalWrite (LED, HIGH);
delay (500);
digitalWrite (LED, LOW);
delay (1000);
}
if (sensorwert == 2) {
digitalWrite (LED, HIGH);
delay (1000);
digitalWrite (LED, LOW);
delay (1000);
}
usw.
}
habe ich einen Denkfehler wenn ich davon ausgehe, dass der sensorwert immer wieder ausgelesen wird und sich die beleuchtungsdauer dementsprechend anpasst?
Hi!
Auch von mir ein Tipp: Ändere den Betreff Deines Postings. Wenn da die Worte „Nachhilfe“ und „Köln“ vorkommen, bekommst Du mit Sicherheit bessere Antworten.
Gruß
Gregor
PS: Übersichtlicher ist es IMO mit einer switch/case-Konstruktion:
...
case 1: digitalWrite(LED, HIGH); delay (500); digitalWrite(LED, LOW); break;
case 2: digitalWrite(LED, HIGH); ...; break;
...
const byte eingang = A0;
const byte LED = 13;
void setup() {
pinMode (LED, OUTPUT);
}
void loop() {
int sensorwert = map(analogRead(eingang), 0, 1023, 1, 16);
digitalWrite (LED, HIGH);
delay (500L * sensorwert);
digitalWrite (LED, LOW);
delay (1000);
}
johncurter:
Ich habe versucht einen Code aus den Beispielprogrammen zusammen zu basteln aber irgendwie tut es nicht was es soll.
Das liegt an dem 'int ' vor dem sensorwert.
sensorwert = analogRead(eingang);
int sensorwert = map(sensorwert, 0, 1023, 1, 16);
Du mapst nicht den gelesenen Wert, sondern Mist aus dem Speicher.
Eigentlich brauchst du die oben deklarierte Globale Variable
int sensorwert;
gar nicht.
void loop() {
int sensorwert = analogRead(A0);
int verteiler = sensorwert/64; // 16 Werte, Bereich 0 .. 15
// Weiter mit der Variablen verteiler
...
}
Die Funktion map kannst du natürlich benutzen, brauchst du aber nicht.
Auf jeden Fall ist es besser die Variable sensorwert nicht für zwei unterschiedliche Sachen zu verwenden.