Tag 7 (special): Hinweis für Arduino Neulinge – Teil 2
Der erste Teil Arduino Beginner Kurses war scheinbar für viele sehr hilfreich. Deswegen habe ich mich dazu entschlossen, auch den zweiten Teil des Handbuches zu überarbeiten und online zu stellen.
In diesem zweiten Teil geht es nun darum, Programme selbst zu schreiben und dabei auch etwas von den Grundlagen in der Arbeit mit Mikrocontrollern zu lernen. Diese Anleitung habe ich bewusst erst heute veröffentlicht, da an dem heutigen Tag auch alle nötigen Bauteile aus dem Adventskalender vorhanden sind, um die kleinen Projekte selbst testen zu können.
Viel Spaß beim ausprobieren :)
Ein Fehler hat sich noch eingeschliechen:
unter „Die erste LED“ passt der Widerstandscode nicht:
“ In meinem Fall habe ich 1,0 kOhm (Farbringe: Braun, Schwarz, Schwarz) “
sollte wohl Braun-Schwarz-Rot heissen :)
Oops, bevor sich Hr. Duden wieder meldet, in meinem obigen Beitrag hat sich auch ein Fehler eingeschlichen (kein „ie“ ;)
Und noch was Konstruktives: Beim Rechenbeispiel koennte man noch anmerken, dass die Werte 3.3 V (Spannungsabfall) und 20 mA (erlaubter Strom) der Diode nicht vom Himmel fallen oder Naturkonstanten sind, sondern vom Hersteller im Datenblatt angegeben werden sollten..
Na wenn der Kurs nur scheinbar hilfreich war, dann hätten Sie sich die Arbeit auch sparen können.
Mich würde mal interessieren ob man mit dem NanoESP auch einen TeamSpeak3 Musikbot machen könnte (so wie SinusBot, Software läuft auf dem Board, steuern über den Computer). Es würde auch reichen wenn man ein Onlineradio wie von laut.fm damit abspielen könnte.
Freue mich auf Antworten
Mfg Merlin
Nein ich glaube das geht nicht.
Denn der Atmega328 ist nur ein 8-Bit Prozessor und der maximale Datenstream von 19200 Baud für SoftwareSerial würden nicht ausreichen für einen Stream..
SoftwareSerial generiert Fehler bei hohen Baudraten wie 250000Baud
Hallo,
erstmal vielen Danke für diese tollen Anleitungen. Allerdings hat sich neben den bereits erwähnten fehlerhaften Pinbelegungen noch ein andere Fehler bei der Regelung über den Poti eingeschlichen:
Die Variable „helligkeit“ ist vom Typ byte deren Wertebereich nur von 0 bis 255 reicht, weshalb die Division durch 4 nicht das gewünschte Ergebniss erzielt. Man erhält stattdessen beim hochdrehen des Potis insgesamt 3 mal einen Sprung auf 0 – nämlich beim Überlauf des Wertes.
int helligkeit = 0;
sollte das Problem lösen :)
Ist der Controller kaputt ?!
AT
OK
AT+GMR
2.1.56
AT+RST
ERROR
Beispiel Programm laden:
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x30
Hast Du irgendwas an der Firmware gespielt?
Normalerweise sieht das so aus:
AT+GMR
AT version:0.22.0.0(Mar 20 2015 10:04:26)
SDK version:1.0.0
compile time:Mar 20 2015 11:00:32
Angeblich sind alle Boards mit der gleichen Firmware. Die Ausgabe bei Dir ist aber definitiv eine andere Version.
Hallo,
passt bisher alles gut.
Klasse wäre noch im Stile der „Schnellstarttips“
ein paar Worte über UDP, Access Port, APN…
zu verlieren. Dann wären 10 Punkte drin!
Grüsse Leo.
Welchen Port muss man benutzen??
Wen es bei jemanden beimm Poti knapp wird, mit dem USB-Kabel Anschluss, einfach den Mircrocontroller eine Reihe in Richtung GND bzw. in die Richtung des LEDs bewegen.
Beim Potentiometer verändert sich die Hellichkeit nicht konstand sondern ungefähr so: Schwach–>Hell–>noch_Heller–>am_Helsten–>Schwach–>Hell—>usw….
wie kann man programmieren dass sich die Hellichkeit konstand verändert?
Hast du den Poti einfach zwischen LED und Versorgung/Port? Den das klappt nur mit speziellen LEDs.
Um die LED zu Dimmen musst du PWM nutzen.
Machst du das eh schon, dann prüf ob dein Übergabewert möglicherweise hüpft (z.B. auf Grund deiner Division) oder nur selten geschrieben wird.
Hatte das selbe Problem…
Bei mir ging der Analogeingang im seriellen Monitor mehrmals von 0 auf 255 (wenn ich das poti von 0 auf Vollausschlag drehte)
Abhilfe: die „map“ Funktion ein paar Zeilen darunter.
Sieht bei mir so aus:
void loop() {
helligkeit = map(analogRead(LDR), 0, 1023, 0, 255); //Helligkeit 10-bit (0 bis 1023) messen und auf 8-Bit (0-255) skalieren
Serial.print („Helligkeit: „); //Schreibe „Text“ auf serielle Schnittstelle
Serial.println(helligkeit); //Messergebnis an PC senden
analogWrite(led, helligkeit); //skalierte Helligkeit an LED ausgeben (0-255)
delay(10); //Wartezeit
}
Finde ich super! So hatte ich mir das vorgestellt. Es gibt noch ein paar Fehler in der Anleitung:
„Die erste LED“:
digitalWrite(led,HIGH); //Pin0 auf HIGH setzen
muss heißen
digitalWrite(led,HIGH); //Pin9 auf HIGH setzen
„Schalter“:
digitalWrite(led,digitalRead(schalter)); //Pin0 auf den Wert von Pin6 setzen
muss heißen
digitalWrite(led,digitalRead(schalter)); //Pin9 auf den Wert von Pin6 setzen
digitalWrite(led,!digitalRead(schalter)); //Pin9 auf den Wert von Pin5 setzen
muss heißen
digitalWrite(led,!digitalRead(schalter)); //Pin9 auf den Wert von Pin6 setzen
„PWM“:
In dem nächsten Beispiel wird nicht mehr Pin0 sondern Pin3 benutzt, da sich Pin0 nicht mit PWM ansteuern lässt
kann entfallen, da die LED schon vorher an Pin 9 hing.
Danke!!!