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: 37)
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
  ESP8266 Webserver Programmieren HDT 11 748 23.08.2016 13:28
Letzter Beitrag: HDT
  IDE 1.7.10 und Attiny programmieren Seewolf 7 476 06.08.2016 11:49
Letzter Beitrag: Seewolf
  Makeblock mit Scratch programmieren- Probleme Keinen Schimmer 6 938 06.05.2016 18:34
Letzter Beitrag: arduinopeter
  propleme beim programmieren einer steuerung für funksteckdosen purzele06 18 3.610 19.11.2015 11:06
Letzter Beitrag: Phil94
  Hilfe! Arduino Leonardo programmieren - Tastatur Simulation noxx 3 884 13.11.2015 17:15
Letzter Beitrag: noxx
  ATtiny13 mit der Arduino IDE 1.0.6 programmieren - geht das? Gelegenheitsbastler 4 1.609 20.10.2015 20:20
Letzter Beitrag: ardu_arne
  Kann man das programmieren ? dsdommi 5 930 01.09.2015 14:12
Letzter Beitrag: hotsystems
  Arduino mit Bascom und AVRISP mkII programmieren Karle 0 794 04.08.2015 13:30
Letzter Beitrag: Karle
  Tracker programmieren? MachwerkTV 1 870 02.07.2015 16:41
Letzter Beitrag: MachwerkTV
  Arduino Ethernet mit USB 2 Serial Converter/Welche Einstellungen im Arduino-Sketch lociluke 1 1.104 05.05.2015 13:40
Letzter Beitrag: Bitklopfer

Gehe zu:


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