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.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino programmieren Schwierigkeiten
08.01.2016, 13:17
Beitrag #1
Arduino programmieren Schwierigkeiten
Guten Tag,
ich muss für die Schule ein Referat vorbereiten über CD's. Ich wollte mit einem Laser und dem Arduino+einer Fotodiode eine CD nachbauen.
ich habe mir das wie folgt vorgestellt:
Immer wenn der von der Fotodiode wahrgenommene Wert über 600 ist, soll der Arduino auf dem Seriellen Monitor eine " 0 " ausgeben. Wenn nun der Wert unter 600 ist, soll ein Mal eine " 1" erscheinen und danach immer wieder eine " 0 ". Erst wenn der Wert wieder über 600 ist, soll eine " 1 " erscheinen und danach wieder eine " 0 ", bis der Wert wieder unter 600 ist.

Ich war dem Ziel schon einmal sehr nah, habe aber versucht es komplett richtig zu machen, und jetzt klappt so gut wie nichts mehr. Sad

Im Anhang schicke ich mein Programmiertes, was aber leider nicht funktioniert.
Das Problem ist glaube ich, dass er nicht mehr aus der 1. if-Schleife raus kommt.

Über Hilfe würde ich mich sehr freuen.
Vielen Dank schon einmal im Voraus.


.ino  Fotodiode_Helligkeit.ino (Größe: 956 Bytes / Downloads: 77)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2016, 14:37
Beitrag #2
RE: Arduino programmieren Schwierigkeiten
(08.01.2016 13:17)Krezimanuel schrieb:  ich weiß nicht genau wie das geht, aber ich hoffe so ist das richtig Wink


[const int analogPin = A0;

void setup() {

Serial.begin(9600);
}

void loop() {


int analogValue = analogRead(analogPin);


Anfang:
if (analogValue > 600) { // wenn Wert über 600 --> " 0 "
Serial.println(0);
delay(500);
goto Anfang; } // wieder von vorne beginnen.

else { // wenn der Wert unter 600 ist --> " 1 "
Serial.println(1);
delay(500);
goto Zwischenteil; } // dann zum Zwischenteil.


Zwischenteil:
if(analogValue < 600) { // wenn Wert unter 600 bleibt --> " 0 "
Serial.println(0);
delay(500);
goto Zwischenteil; } // weiter schauen, ob Wert unter 600 bleibt.


else {
Serial.println(0); // wenn Wert wieder über 600 --> " 1 "
delay(500);
goto Anfang; } // wieder zum Anfang gehen und alles fängt wieder von vorne an.


}

]

[/code]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2016, 16:10
Beitrag #3
RE: Arduino programmieren Schwierigkeiten
Na... da gehts ja hoch her mit den GOTOs Smile
Brauchst Du eigentlich nicht, verwirrt nur den Leser.

Loop bedeutet ja, das Dein Programm sich immer wieder von neuem "abspult".
Also einfach alles der Reihe nach im Loop erledigen lassen, dann fängt der anschliessend von selbst wieder von oben an.

Im Prinzip musst Du erstmal den Analogen Wert runterbringen auf 0 oder 1
Also am Anfang vom Loop entscheiden ob der Wert über oder unter 600 liegt.
Dazu kannst Du über Division da ran gehen, oder per If/else, ist Dir überlassen.
Dieses Null oder 1 schreibst Du in eine Variable, z.B. "Sensor"

Dann brauchst Du eine zusätzliche Variable, nennen wir sie "Sensor_alt"
Jetzt vergleichst Du den Wert von Sensor mit Sensor alt
if(Sensor_alt !=Sensor) {} // Wenn Variablen ungleich, dann...

Hat sich der Wert geändert, schreibst Du eine 1 in den Monitor
Serial.print("1");
wenn nicht (else)
Serial.print("0");

Am Ende vom Loop legst Du den Wert Sensor in Sensor_alt.
Dann noch ein Delay, nicht so toll, aber in diesem einfachen Lernbeispiel in Ordnung.

Jetzt wird Dir aber nur eine ÄNDERUNG des Zustands angezeigt.
Eine CD arbeitet doch "etwas" komplizierter.

Schau Dir mal bei Google sowas wie "Serielle Schnittstelle" oder "Bussystem" an.
Da gehts zwar um elektrische Signale, aber sonst im Prinzip mit CD und CD-player vergleichbar.
Der "Sender" ist dabei dann einfach die CD, sie gibt den Datenstrom vor.
Der Empfänger ist der CD Spieler, der die High/Low Signale auswertet.

Natürlich gehts per CD nur in eine Richtung (von CD zum Player)
Beim CD brennen, gehts wieder um was ganz anderes Wink

weitermachen Smile

Binatone
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Programmieren, welche Software ist möglich W-P-Grimma 5 381 03.04.2018 16:33
Letzter Beitrag: Tommy56
  Hilfe beim Programmieren Klawino 28 1.385 10.03.2018 13:36
Letzter Beitrag: hotsystems
  Brauche Unterstützung bei Programmieren Geeros#18 4 450 12.02.2018 22:14
Letzter Beitrag: Chopp
  Makeblock mit Scratch programmieren- Probleme Keinen Schimmer 17 4.408 30.12.2017 00:40
Letzter Beitrag: koma1965
  Arduino mit Android programmieren. maxx 4 600 28.11.2017 18:32
Letzter Beitrag: hotsystems
  Attiny45-20 programmieren PeterCrash 4 686 22.09.2017 20:49
Letzter Beitrag: Mathias
  ATtinys programmieren Thor Wallhall 11 1.504 14.09.2017 21:26
Letzter Beitrag: Thor Wallhall
  ATtiny13 mit der Arduino IDE 1.0.6 programmieren - geht das? Gelegenheitsbastler 5 3.494 11.09.2017 15:24
Letzter Beitrag: Mathias
  Kommandozeilen-Parser programmieren tollewurst 2 593 21.08.2017 22:15
Letzter Beitrag: georg01
  Optischenfüllstandsensor programmieren Freeed94 19 1.559 13.05.2017 08:03
Letzter Beitrag: Binatone

Gehe zu:


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