zuerst mal: ich habe erst vor kurzem mit Arduino angefangen und will da auch nicht so tief einsteigen, sondern nur ein Projekt vollenden. Das erstmal dazu.
Ich habe schon exrem viel gelesen, aber leider komme ich nicht weiter und wenn ich nicht weiter weiss, komme ich hierher zu den Profis. Mein Kopf expodiert so langsam und ich habe keine Ideen mehr.
Ich habe einen Arduino nano und einen DFplayer.
Damit wollte ich nun mp3s abspielen, die auf der SD karte sind.
Die SD-karte ist FAT32 formatiert und hat einen Ordner namens MP3 drin mit mp3 Dateien, die nach 0001.mp3 0002.mp3 usw. benannt sind. Die mp3s sind korrekt aufgebaut, also 44,1khz, CBR 192kbit, jede Datei hat etwa 7,2MB.
Ich habe den Arduino mit dem DFplayer verdrahtet. Ich habe schon etliche Verdrahtungsversionen aus dem Internet versucht, nichts funktioniert.
Der DFplayer spielt einfach nichts ab, er kann nicht vom Arduino gestartet werden.
Die Lautsprecher sind 4 Ohm Lautsprecher aus einem Notebook, also nur wenig watt und die passen.
An der Verdrahtung und den Komponenten glaube ich liegt es nicht, aber vielleicht am Code und der Bibliothek? Falls jemand einen definitiv funktionierenden Code hat mit funktionierender Bibliothek, würde ich mich sehr freuen die mal zu testen.
Nochwas: ich habe gesehen, dass die meisten einen 1k ohm Widerstand zwischen Rx dfplayer und pin11 vom arduino machen. das habe ich auch. Ich habe aber auch eine Schaltung gesehen, in der zwischen Tx und pin10 auch ein 1k ohm Widerstand geschalten wurde. nur einmal gesehen, aber vielleicht weiss jemand, was nun korrekt ist. Probiert habe ich das auch, ging aber trotzdem nicht.
Am Ende sollen dann die mp3s abgespielt werden, wenn ein PIR ein Signal schickt. Das nur vorweg, aber davon schein ich noch Lichtjahre entfernt zu sein...
if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3.
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));
while(true){
delay(0); // Code to compatible with ESP8266 watch dog.
}
}
Serial.println(F("DFPlayer Mini online."));
myDFPlayer.volume(16); //setze lautstaerke von 0 bis 30
}
void loop()
{
delay(5000);
daistwer = digitalRead(ausloeser);
Serial.println(F("wert bewegung: "));
Serial.println(daistwer);
if (daistwer == 1){
myDFPlayer.play(1); //Play the first mp3
delay(25000);
}
}
Ich bin etwas irritiert, was der 1K-Widerstand an D11 soll.
Dann frage ich mal Google nach der Library und finde diese bei Arduino.cc - hängt an. In dieser sind Programmbeispiele "examples" und dort fällt mir auf, dass diese andere Datenleitungen verwenden.
1
#include<SoftwareSerial.h>
2
SoftwareSerialsoftSerial(/*rx =*/4,/*tx =*/5);
3
#define FPSerial softSerial
In den Beispielen steht UNO, aber der Nano verhält sich exakt gleich.
Ich würde jetzt die Beispiele durchtesten, bevor ich eigenen Programmcode baue!
Ich bin etwas irritiert, was der 1K-Widerstand an D11 soll.
Soweit ich das verstanden habe dürfen auf dem Datenpin Rx vom DFPlayer keine 5V anliegen. Daher muss da ein 1k Ohm Widerstand rein. Ich habe nun auch auf dem Tx einen reingemacht aber dank deiner Frage habe ich nicht nur nachgemacht sondern nachgedacht und der am Tx macht keinen Sinn, da der Arduino das Signal vom DFPlayer auch ohne Widerstand verkraftet.
Dann frage ich mal Google nach der Library und finde diese bei
Arduino.cc - hängt an. In dieser sind Programmbeispiele "examples" und
dort fällt mir auf, dass diese andere Datenleitungen verwenden.
1
#include<SoftwareSerial.h>
2
>SoftwareSerialsoftSerial(/*rx =*/4,/*tx =*/5);
3
>#defineFPSerialsoftSerial
4
>
Danke dir!
In den Beispielen steht UNO, aber der Nano verhält sich exakt gleich.
Das kann ich bestätigen.
Ich würde jetzt die Beispiele durchtesten, bevor ich einen eigenen
Programmcode baue!
Ja das teste ich mal. Mir war so als ob der Arduino feste Seriellports hat, aber man die aus irgendeinem Grund nicht nutzen soll und stattdessen mit diesem softwareserial arbeitet und dann Pin 10 und 11 nimmt. Genaueres habe ich nicht verstanden, ist mir auch egal welcher Pin, Hauptsache es läuft bald...
Ich würde jetzt die Beispiele durchtesten, bevor ich eigenen
Programmcode baue!
Ich habe den GetStarted tatsächlich schon mal getestet bzw. testen wollen. Der gibt mir beim Überprüfen folgenden Fehler:
1
GetStarted.ino:33:21: Fehler: Redefinition von »DFRobotDFPlayerMini myDFPlayer«
2
sketch_nov20a.ino:8:21: Anmerkung: »DFRobotDFPlayerMini myDFPlayer« previously declared here
3
GetStarted.ino: In Funktion »void setup()«:
4
GetStarted.ino:36:6: Fehler: Redefinition von »void setup()«
5
sketch_nov20a.ino:12:6: Anmerkung: »void setup()« previously defined here
6
GetStarted.ino:30:18: Fehler: »Serial1« wurde in diesem Gültigkeitsbereich nicht definiert
7
GetStarted.ino:41:3: Anmerkung: bei Substitution des Makros »FPSerial«
8
GetStarted.ino: In Funktion »void loop()«:
9
GetStarted.ino:64:6: Fehler: Redefinition von »void loop()«
10
sketch_nov20a.ino:33:6: Anmerkung: »void loop()« previously defined here
Der Code
1
#include <DFRobotDFPlayerMini.h>
2
#include "DFRobotDFPlayerMini.h"
3
#include "Arduino.h"
4
#include "SoftwareSerial.h"
5
#include "DFRobotDFPlayerMini.h"
6
7
SoftwareSerial mySoftwareSerial(4, 5); // RX, TX
8
DFRobotDFPlayerMini myDFPlayer;
9
int ausloeser = 9; //Bewegungsmelder Pin 9
10
int daistwer;
11
12
void setup()
13
{
14
mySoftwareSerial.begin(9600);
15
Serial.begin(115200);
16
pinMode(ausloeser, INPUT);
17
Serial.println();
18
Serial.println(F("DFRobot DFPlayer Mini"));
19
Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
20
21
if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3.
22
Serial.println(F("Unable to begin:"));
23
Serial.println(F("1.Please recheck the connection!"));
24
Serial.println(F("2.Please insert the SD card!"));
25
while(true){
26
delay(0); // Code to compatible with ESP8266 watch dog.
27
}
28
}
29
Serial.println(F("DFPlayer Mini online."));
30
myDFPlayer.volume(16); //setze lautstaerke von 0 bis 30
31
}
32
33
void loop()
34
{
35
delay(5000);
36
daistwer = digitalRead(ausloeser);
37
Serial.println(F("wert bewegung: "));
38
Serial.println(daistwer);
39
if (daistwer == 1){
40
myDFPlayer.play(1); //Play the first mp3
41
delay(25000);
42
}
43
}
gibt mir keinen Fehler, aber läuft auch nicht, obwohl nun die Pins auf Rx-D4 und Tx-D5 geändert wurden. Ich bekomme nur ein kleines Knacken vom Lautsprecher beim Übertragen.
Es gibt noch Tx1 und Rx0 auf dem Arduino als Pin. Kann man die auch verwenden?
Man kann den auch erstmal nur mit 2 Tasten bedienen:
1
Ein Taster verbindet den IO1 bei Betätigung mit GND. Damit kann man zum vorherigen Titel springen (PREV) oder durch längeres Betätigen die Lautstärke verringern (Vol-).
2
Ein weiterer Tater verbindet den IO2 bei Betätigung mit GND. Damit kann man zum nächsten Titel springen (NEXT) oder durch längeres Betätigen die Lautstärke erhöhen (Vol+).
Man kann den auch erstmal nur mit 2 Tasten bedienen:
1
Ein Taster verbindet den IO1 bei Betätigung mit GND. Damit kann man
zum vorherigen Titel springen (PREV) oder durch längeres Betätigen die
Lautstärke verringern (Vol-).
Ein weiterer Tater verbindet den IO2 bei Betätigung mit GND. Damit
kann man zum nächsten Titel springen (NEXT) oder durch längeres
Betätigen die Lautstärke erhöhen (Vol+).
Ja, das stimmt. Nur momentan läuft der DFPlayer nicht an, wenn er vom Arduino gestartet werden soll. Ich wäre schon mal froh, wenn der DFPlayer anfängt zu spielen, wenn der Arduino Strom bekommt.
die Webseite hatte ich auch schon angeschaut und jetzt gerade nochmal durchgelesen. Leider konnte ich nichts zum Thema Initialisieren finden. Hast du etwas dazu gelesen?
Das Einzige ist der Teil im Code, den habe ich aber bereits drinnen in "meinem" Code:
1
Serial.println();
2
Serial.println(F("DFRobot DFPlayer Mini"));
3
Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
Suche hier mal den Thread "MP3 Player für Kinder" oder ähnlich - dort sind die Grundlagen schön beschrieben - auch was die erforderliche Ordner-Struktur angeht.
Suche hier mal den Thread "MP3 Player für Kinder" oder ähnlich - dort
sind die Grundlagen schön beschrieben - auch was die erforderliche
Ordner-Struktur angeht.
Der Order auf der SD karte ist korrekt so und wird vom DFPlayer auch erkannt: MP3 als Ordner und im Ordner dann die Dateien 0001.mp3 0002.mp3 usw.
Offensichtlich funktioniert dieser DFPlayer (sowohl prinzipiell und das Exemplar das bei Dir auf dem Tisch liegt). Du schrubst auch: "er spielt die mp3 ab". Das spielt die mp3 ab die Du ausgewaehlt hast -> Dein DFPlayer ist vermutlich OK.
Ich wuerde jetzt nochmal wie folgt vorgehen: https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299, das Ding gemaess "Connection Diagram" verbinden (nur Arduino, 1kR, Player). Und jetzt von der oben genannten Webseite die original Library und das Beispielprogramm laden. Immer zuerst beim Hersteller gucken.
Der Hinweis mit der orginal-Firmware (oder Library) ist auch ernst gemeint, vielleicht hast Du eine alte oder modifizierte Version.
Ich habe noch einmal nachgeguckt: nano und Uno sind vom Pinout kompatibel.
Auch banal: Du hast eine richtige Spannungsquelle? Nicht z.B. ein ganz duennes USB-Kaebelchen wo es am Ende nur 4V rauskommt?
Ja, es gibt verschiedene SW-Versionen vom DF-Player. Jeder hat seine "Macken" woanders. Die lassen sich durchaus umgehen, wenn man die Version des DF-Players kennt.
Von daher sei dem TO dringend angeraten, erstmal die Version abzufragen. Das geht mit dem Kommando 0x46.
die Webseite hatte ich auch schon angeschaut und jetzt gerade nochmal
durchgelesen. Leider konnte ich nichts zum Thema Initialisieren finden.
Hast du etwas dazu gelesen?
Das Einzige ist der Teil im Code, den habe ich aber bereits drinnen in
"meinem" Code:
Das ist nicht die Initialisierung. Die erfolgt eine Zeile tiefer.
if (!myDFPlayer.begin(FPSerial, /*isACK = */true, /*doReset = */true)) { //Use FPserial to communicate with mp3.
Hast du auch zwei serielle Schnittstellen richtig initialisiert?
Am besten ist es immer, erst mal den originalen Herstellercode auszuprobieren und dann eigene Anpassungen zu machen.
Ich wuerde jetzt nochmal wie folgt vorgehen:
https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299, das Ding gemaess
"Connection Diagram" verbinden (nur Arduino, 1kR, Player). Und jetzt von
der oben genannten Webseite die original Library und das
Beispielprogramm laden. Immer zuerst beim Hersteller gucken.
Hallo Vax,
in dem Diagramm sind die Pins vom Rx auf 11 Arduino und Tx auf 10 Arduino.
In dem Code steht aber:
1
#include <SoftwareSerial.h>
2
SoftwareSerial softSerial(/*rx =*/4, /*tx =*/5);
Ich bin kein Experte aber vielleicht wurde da ein Fehler gemacht?
Hier ist übrigens irgendein Mensch mit Problemen und zuviel Zeit, der alle Beiträge auf -1 setzt. Das Forum hier ist das beste, das es gibt, aber leider verirren sich auch solche Menschen hier.
Von daher sei dem TO dringend angeraten, erstmal die Version abzufragen.
Das geht mit dem Kommando 0x46.
Ich habe den Arduino an den DFPlayer angeschlossen (mittlerweile verlötet, damit wirklich alles leitet und bin auf den Serial Monitor. Dort kam wieder der Init-Fehler. Ich habe dann 0x46 eingegeben und auf Senden gedrückt. Da kam nichts, aber das ist das einzige, was ich sehe, wo ich einen Befehl schicken kann. Kannst du mir sagen, wo ich die Version abfragen kann?
Der Hinweis mit der orginal-Firmware (oder Library) ist auch ernst
gemeint, vielleicht hast Du eine alte oder modifizierte Version.
Ich habe nach Firmware Updates im Zusammenhang mit DFPlayer gesucht, aber nichts Brauchbares gefunden. Ich wüsste auch nicht, wie man das aufspielen sollte, da man ja nur mittels Arduino darauf Zugriff hat und die Verbindung ja irgendwie nicht geht.
Auch banal: Du hast eine richtige Spannungsquelle? Nicht z.B. ein ganz
duennes USB-Kaebelchen wo es am Ende nur 4V rauskommt?
ich habe den Arduino testweise an ein 5V 2A Netzteil gehängt, aber auch da tut sich nichts. Die Verbindungen zwischen den Pins habe ich mittlerweie auf einer Lochplatine erstellt. Ich hatte gelesen, dass Leute mit denselben Problemen Wackelkontakte hatten oder Probleme mit dem Breadboard. Ich hatte zwar bereits durchgemessen von Pin zu Pin, aber nun ist es sicher gut verbunden mit dickeren Kabeln und kurzen Kabeln.
Und achja: ich habe dem Arduino 5V via USB gegeben und zwischen 5V und GND Pin vom DFPlayer gemessen: 4,8V. Passt also auch.
Hast du auch zwei serielle Schnittstellen richtig initialisiert?
Wie macht man das?
Hast du schon mal den von mir verlinkten Originalcode laufen lassen? Da werden zwei serielle Schnittstellen verwendet. Eine Hard-serielle fü die Monitorausgaben und eine Soft-serial für die Steuerung des MP3-Players.
Ansonsten: Versuch macht Kluch. Frage: Wie hat man das früher ohne Internet und Foren hinbekommen, dass es lief? Man hat nachgedacht und ausprobiert!
Frage: Wie hat man das früher ohne
Internet und Foren hinbekommen, dass es lief? Man hat nachgedacht und
ausprobiert!
Damals gab es keine Arduino mit DFPlayer. Aber im Ernst, ich habe früher viel selber gemacht und gestetet. Momentan zerbreche ich mir an einer Hintergrundbeleuchtung von einem Monitor den Kopf, weil die Verkabelung so durcheinander aufgebaut wurde. Da merkte ich: Es ist nicht mehr 1980, wo man mit 2 Drähten die Sachen zum Laufen brachte.
Ich dachte, Du haettest jetzt die Hersteller-Software einfach mit Copy&Paste kopiert (die haben so gar einen Knopf "COPY" bei ihrem Code).
Erstmal was der Hersteller schreibt.
Und Du weisst schon, dass ZWEI serielle Schnittstellen (eine fuer die Serial-Monitor und die andere fuer die Kommunikation mit den Player) notwendig sind?
Ich dachte, Du haettest jetzt die Hersteller-Software einfach mit
Copy&Paste kopiert (die haben so gar einen Knopf "COPY" bei ihrem Code).
Erstmal was der Hersteller schreibt.
Und Du weisst schon, dass ZWEI serielle Schnittstellen (eine fuer die
Serial-Monitor und die andere fuer die Kommunikation mit den Player)
notwendig sind?
Nein, das wusste ich nicht. Ich bin wirklich blutiger Anfänger mit grossen Kopfschmerzen mittlerweile.
Wie was muss ich nun tun? Ich sehe überhaupt nicht mehr durch, tut mir leid.
Was müsste ich denn im Code ändern, wenn ich den Hardware Serial Port
nutzen will?
Das willst du bestimmt nicht weil diese beiden Pin mit dem USB-UART verbunden sind und sowohl zum Programmieren als auch zum Debuggen (serial Monitor) gebraucht werden.
gibt es einen Getstarted Code. Den habe ich kopiert und ins Arduino IDE eingefügt. Dann speichern udn dann auf Code prüfen.
Es ergibt:
Fehler beim Kompilieren:
sketch_nov21b.ino: In Funktion »void setup()«:
sketch_nov21b.ino:34:18: Fehler: »Serial1« wurde in diesem Gültigkeitsbereich nicht definiert
sketch_nov21b.ino:45:3: Anmerkung: bei Substitution des Makros »FPSerial«
Was müsste ich denn im Code ändern, wenn ich den Hardware Serial Port
nutzen will?
Das willst du bestimmt nicht weil diese beiden Pin mit dem USB-UART
verbunden sind und sowohl zum Programmieren als auch zum Debuggen
(serial Monitor) gebraucht werden.
Das heisst der serial Monitor müsste funktionieren, wenn der Arduino via USB mit dem PC verbunden ist?
ergibt wieder:
sketch_nov21b.ino: In Funktion »void setup()«:
sketch_nov21b.ino:34:18: Fehler: »Serial1« wurde in diesem Gültigkeitsbereich nicht definiert
sketch_nov21b.ino:45:3: Anmerkung: bei Substitution des Makros »FPSerial«
ergibt wieder:
sketch_nov21b.ino: In Funktion »void setup()«:
sketch_nov21b.ino:34:18: Fehler: »Serial1« wurde in diesem
Gültigkeitsbereich nicht definiert
sketch_nov21b.ino:45:3: Anmerkung: bei Substitution des Makros
»FPSerial«
Und Du musst natuerlich nano als Board einstellen...
nicht wirklich Angst aber 1. will ich keine Fehler machen und daduch dann eure Zeit weiter verschwenden und 2. will ich nicht, dass es später heisst nun ist der Arduino defekt, kauf erstmal einen neuen. Also wieder Zeit...
Und Du musst natuerlich nano als Board einstellen...
Gut dass du das erwähnst, aber das habe ich. ich kann ja auch den Code auf den Ardiuno schicken. Nicht jetzt diesen mit Fehler, aber andere gingen. Dann leuchten alle lampen wild vom Arduino und am Ende rauscht es aus den Lautsprechern.
Also von diesem Absatz sollen diese beiden Zeilen übrig bleiben.
Der DfPlayer gehört demnach an Pin 4 und 5.
Tut imr leid wenn ich nochmal nachfrage, aber du sagst "beide". ich sehe aber 3 Zeilen.
Soll ich alles andere ausser diese 3 Zeilen löschen, d.h. der komplette Code besteht nur noch aus den 3 Zeilen oder wie soll der finale Code aussehen?
Tut imr leid wenn ich nochmal nachfrage, aber du sagst "beide". ich sehe
aber 3 Zeilen.
Soll ich alles andere ausser diese 3 Zeilen löschen,
ja, aber nur in diesem einen Absatz.
Kann es sein, dass du null Ahnung von der Programmiersprache hast? Dann musst du sie dringend lernen, aber nicht mit so einem komplexen Projekt. Kaufe dir ein Buch über Arduino oder gehe die Einsteiger Tutorials von Arduino.cc der Reihe nach durch. Gehe danach ein Lehrbuch über C++ durch.
in dem Diagramm sind die Pins vom Rx auf 11 Arduino und Tx auf 10
Arduino.
In dem Code steht aber:#include <SoftwareSerial.h>
SoftwareSerial softSerial(/rx =/4, /tx =/5);
Ich bin kein Experte aber vielleicht wurde da ein Fehler gemacht?
So langsam platzt mir der *****. Wenn im Programmcode 4 und 5 steht, genügt die Intelligenz eines Toastbrotes, zu erkennen, dass Hardware an 10 - 11 nicht dazu passt.
Ich hatte gestern den Vorschlag gemacht, anstatt eigener Software die Arduino-Beispiele zu testen. Dass jemand nicht in der Lage ist, die Verdrahtung anzupassen, übersteigt mein Vorstellungsvermögen.
Und Du musst natuerlich nano als Board einstellen...
Schwachsinn^3!
In der Beispielsoftware wird zwischen ESP und UNO unterschieden. Schreibt er da Nano hin, läuft die Verzweigung nach irgendwo.
Uno und Nano benutzen den gleichen µC und haben gleiche Pin-Nummern. Alles, was für den Uno erzeugt wurde, funktioniert auch auf dem Nano, also bleibt da Uno stehen!
Tut imr leid wenn ich nochmal nachfrage, aber du sagst "beide". ich sehe
aber 3 Zeilen.
Soll ich alles andere ausser diese 3 Zeilen löschen,
ja, aber nur in diesem einen Absatz.
okay, der code sieht nun so aus:
1
#include "Arduino.h"
2
#include "DFRobotDFPlayerMini.h"
3
4
#include <SoftwareSerial.h>
5
SoftwareSerial softSerial(/*rx =*/4, /*tx =*/5);
6
#define FPSerial softSerial
7
8
DFRobotDFPlayerMini myDFPlayer;
9
void printDetail(uint8_t type, int value);
kompilieren ging durch. Darf ich das so an den Arduino schicken?
Kann es sein, dass du null Ahnung von der Programmiersprache hast? Dann
musst du sie dringend lernen, aber nicht mit so einem komplexen Projekt.
Kaufe dir ein Buch über Arduino oder gehe die Einsteiger Tutorials von
Arduino.cc der Reihe nach durch. Gehe danach ein Lehrbuch über C++
durch.
Ich habe null Ahnung vom Arduino und ich will das auch nicht lernen. Ich will meiner frau sone MP3 Box basteln und dann will ich von Arduino nichts mehr hören, wenn ich ehrlich bin. Vor allem wenn ich merke, wie kompliziert das ist. Vor allem: entweder läuft es oder nicht. Es gibt quasi kein wirkliches fehlerbeheben.
Bzgl. Programmieren: ganz so 0 Erfahrung habe ich nicht. Sonst wäre mir der Fehler auf der Herstellerseite nicht aufgefallen, aber ich kann kein C++, das stimmt.
Uno und Nano benutzen den gleichen µC und haben gleiche Pin-Nummern.
Alles, was für den Uno erzeugt wurde, funktioniert auch auf dem Nano,
also bleibt da Uno stehen!
Ich habe leider kein Gesetz gefunden, welches diese Vorgehensweise ausdrücklich erlaubt. Du musst selbst entscheiden, ob du diesen extrem waghalsigen Schritt wagen willst. Vielleicht fragst du vorher noch bei der Allianz Versicherung, ob sie dich dabei stützen können.
:-)
entweder läuft es oder nicht. Es gibt quasi kein wirkliches fehlerbeheben.
Das ist exakt die falsche Einstellung zum Programmieren. So kann es unmöglich erfolgreich enden.
Ich habe null Ahnung vom Arduino und ich will das auch nicht lernen.
Ja sorry, aber dann solltest du den Kram in die Mülltonne werfen und dich erquicklicheren Dingen zuwenden.
Vielleicht fragst du vorher noch bei
der Allianz Versicherung, ob sie dich dabei stützen können.
Der Mann ist tot, die Witwe kichert, denn er war Allianz versichert.
Also ich bin raus, bei soviel Ignoranz und Nicht-Können-Wollens des TO.
Ich probiere seit etwa 2 Wochen. Das Forum hier ist der letzte Schritt. Ich habe kein Bock mehr, ja. Aber ich bin nicht ignorant. Alles was ich gelesen habe und getestet habe, hat zu nichts geführt. Bissl Frust ist da denke ich menschlich.
Ich habe leider kein Gesetz gefunden, welches diese Vorgehensweise
ausdrücklich erlaubt. Du musst selbst entscheiden, ob du diesen extrem
waghalsigen Schritt wagen willst. Vielleicht fragst du vorher noch bei
der Allianz Versicherung, ob sie dich dabei stützen können.
:-)
ich war so mutig und habe es getan bzw wollte es, aber Fehler:
1
Binäre Sketchgröße: 6’720 Bytes (von einem Maximum von 30’720 Bytes)
2
processing.app.SerialNotFoundException: Der serielle Port '/dev/ttyUSB1' wurde nicht gefunden. Haben Sie den richtigen aus dem Menü Tools > Serieller Port ausgewählt?
3
at processing.app.Serial.<init>(Serial.java:192)
4
at processing.app.Serial.<init>(Serial.java:77)
5
at processing.app.debug.Uploader.flushSerialBuffer(Uploader.java:77)
6
at processing.app.debug.AvrdudeUploader.uploadViaBootloader(AvrdudeUploader.java:175)
7
at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:67)
8
at processing.app.Sketch.upload(Sketch.java:1671)
9
at processing.app.Sketch.exportApplet(Sketch.java:1627)
10
at processing.app.Sketch.exportApplet(Sketch.java:1599)
11
at processing.app.Editor$DefaultExportHandler.run(Editor.java:2380)
12
at java.base/java.lang.Thread.run(Thread.java:829)
Serieller Port ist nun ausgegraut im Menü. Ich kann ihn nicht (mehr) auswählen.
Du hast immer noch nicht dein Board ausgewählt (was wohl auch der Grund ist, warum das Makros trotz Änderung von UNO zu NANO versagte). Zum Programmieren dieses Boardes brauchst du keinen "Programmer", denn du nutzt ja das USB Kabel und den vorinstallierten Bootloader.
Natürlich musst du auch den richtigen seriellen Port einstellen, der deinem Nano beim Einstecken zugewiesen wurde. Als root Benutzer kannst du den Befehl sudo dmesg -T direkt nach dem Anstecken des USB Kabels benutzen, um den Namen des virtuellen COM Portes heraus zu finden. Normale (nicht root) Benutzer müssen Mitglied der Gruppe "dialout" sein, um diese Ports benutzen zu dürfen.
Das steht alles in den Anfänger Tutorials zu Arduino. Ich sehe wenig Sinn darin, diese für dich persönlich nochmal neu zu schreiben. Arbeite die bereits vorhandenen Anleitungen der Reihe nach durch, um den Umgang mit dem System kennen zu lernen.
Du hast immer noch nicht dein Board ausgewählt (was wohl auch der Grund
ist, warum das Makros trotz Änderung von UNO zu NANO versagte).
Ich glaube das ist aber ausgewählt. In der Liste wird der Nano aber nur sichtbar wenn ich mit der Maus beim Eintrag Nano bin. Ich nehme an das ist ein Bug wegen Linux oder so. Aber der Nano ist ausgewählt oder?
Zum
Programmieren dieses Boardes brauchst du keinen "Programmer", denn du
nutzt ja das USB Kabel und den vorinstallierten Bootloader.
Programmer ist klar aber Bootloader bin ich nicht sicher weil da Bootloader installieren steht. heisst das dass der noch nicht installiert ist entgegen deiner Vermutung?
Natürlich musst du auch den richtigen seriellen Port einstellen, der
deinem Nano beim Einstecken zugewiesen wurde. Als root Benutzer kannst
du den Befehl sudo dmesg -T direkt nach dem Anstecken des USB Kabels
benutzen, um den Namen des virtuellen COM Portes heraus zu finden.
Normale (nicht root) Benutzer müssen Mitglied der Gruppe "dialout" sein,
um diese Ports benutzen zu dürfen.
Der COM port ist klar und wurde durch dmesg bestätigt: ttyUSB0
nur kann ich den nicht auswählen, wenn der Eintrag in IDE grau ist.
Das steht alles in den Anfänger Tutorials zu Arduino. Ich sehe wenig
Sinn darin, diese für dich persönlich nochmal neu zu schreiben. Arbeite
die bereits vorhandenen Anleitungen der Reihe nach durch, um den Umgang
mit dem System kennen zu lernen.
Das stimmt, das sollst du auch nicht. Ich will nur dieses teil zum Laufen bringen ohne dafür die Architektur des Arduinos verstehen zu wollen. Soll nicht ignorant klingen, aber das Teil ist für mich nur Mittel zum Zweck und ich will damit keine weiteren Projekte machen. Ich will dass der Arduino den DFPlayer startet und später dann per PIR. Sollte machbar sein, aber scheint vielen auf der Welt Probleme zu bereiten...
okay, Der teilweise gelöschte Originalcode: Kompilieren lief. Auswahl vom Port auch, Senden an den Arduino auch. Abspielen tut er allerdings nichts. Müsste ja direkt nach dem Rüberschicken des Codes von alleine starten oder muss ich noch was tun?
Ich habe null Ahnung vom Arduino und ich will das auch nicht lernen. Ich
will meiner frau sone MP3 Box basteln und dann will ich von Arduino
nichts mehr hören, wenn ich ehrlich bin.
Dann verschwinde hier! Arduino ist die mit weitem Abstand simpelste Umgebung, mit Mikrocontrollern zu basteln.
Kümmere Dich um Deine Frau, vielleicht ist die ja glücklicher, wenn Du mal Mittagessen kochen oder ein Brot backen kannst.
Die beiden Boards haben nicht die gleiche Kennung. Davor kommt noch das
Präfix "ARDUINO_".
Das ist vollkommen egal. Alle UNO-Beispiele habe ich klaglos auf einen Nano laden können und die spielen. Ich habe ein Uno-Bastelbord und schiebe den Kram später zum Nano, ohne Inkompatibilitäten zu erleben. Wenn Strom gespart werden soll, ist auch der ProMini kompatibel.
Zu Beginn erkennt Deine Software den DFPlayer nicht, und jetzt kannst Du
diese nicht einmal mehr auf den Nano schieben?
Beides stimmt nicht. Der Serial Monitor zeigt immer noch:
DFRobot DFPlayer Mini Demo
Initializing DFPlayer ... (May take 3~5 seconds)
Unable to begin:
1.Please recheck the connection!
2.Please insert the SD card!
Und den gekürzten Code konnte ich auf den Arduino schieben, aber der Player startet immer noch nicht.
Der Rest, den du schreibst, ist Unsinn. Wenn du nicht helfen willst/kannst, dann respektiere ich das. Bitte aber keinen Frust hier abladen, den habe ich genug dank meinem Problem.
Bitte aber keinen Frust hier abladen, den habe ich genug dank meinem
Problem.
Das nicht Lesen wollen?
Oder das nicht verstehen wollen?
Alles was du an hilfe brauchst steht bereits hier!
Verkabel das ding RICHTIG mit deinem arduino. Und zwar so wie im Beispiel vorgegeben, nimm das Beispiel, spiel es auf und teste.
Man wählt die Pins entweder selbst und kann dies im Code umsetzen oder bleibt bei den im Beispiel genannten Pins, aber verkabelt das Teil nicht einfach irgendwie und denkt das müsse laufen!
Wenn du nicht ein mal das hinbekommst, sehe ich schwarz für dein Geschenk.
Ich bezweifle das du es hinbekommst das auslösen des PIR als "Play" zu integrieren weil du ja nicht wissen willst wie es funktioniert.
Verkabel das ding RICHTIG mit deinem arduino. Und zwar so wie im
Beispiel vorgegeben, nimm das Beispiel, spiel es auf und teste.
Man wählt die Pins entweder selbst und kann dies im Code umsetzen oder
bleibt bei den im Beispiel genannten Pins, aber verkabelt das Teil nicht
einfach irgendwie und denkt das müsse laufen!
Es ist nicjt irgendwie verkabelt, es ist wie auf dem Bild des Herstellers verkabelt. Der Code wurde aufgespielt und läuft bei mir nicht.
Es ist nicht schwer, deshalb traute ich mir dieses Projekt zu.
Das meinte ich mit "es gibt keine Fehlerbehebung". Entweder es funktioniert oder nicht. Sowas wie Fehlercodes auslesen oder so gibt es anscheinend nicht. Der Nutzer in dem Fall ich ist zu dumm, so einfach ist das.
Die SD-Karte ist ja bereits richtig eingelegt, formatiert, strukturiert und hat passenden Inhalt. Ohne arduino geht es ja.
Also bleibt nur noch das du irgendwo in der Verkabelung oder im beispielcode was "verbastelt" hast.
Und wie du ohne zu verstehen den PIR auswerten willst, ohne das der Player wie wild An/Aus geht, ist mir auch ein Rätsel.
Der schaltet immer nur so lange (+ etwas "nachlaufzeit" ) seinen Digitalausgang wie er Bewegung erkennt. Die Hand davor halten löst zwar aus, aber er bleibt nicht ausgelöst.
Du musst dieses Verhalten also in deinem Programm berücksichtigen und das geht nur wenn du dir eine entsprechende "logik" dafür programmierst.
Ich habe nochmal einen anderen Weg genutzt und alles mit einem Windows Rechner gemacht:
Arduino IDE 2.2.1 installiert
CH430 Treiber installiert
Arduino mit DFplayer angeschlossen
Originalcode genommen von hier:
https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299
Die Zeile
Jetzt in der Windows Version habe ich auch mehr Optionen zum
Auslesen
So ein Quatsch!
Arduino IDE ist in Java geschrieben, unabhängig vom Betriebssystem und hat immer den selben Funktionsumfang und bedienung!
Einziger Unterschied ist die Verwendung unterschiedlicher Versionen der IDE. Ich arbeite noch unter 1.8.19 und wie du siehst kann ich genau das gleiche auslesen wie du!
Der Fehler beim upload (und Nun wirst du am Ende vollends verwirrt sein) könnte auch daher rühren das du versucht hast RX/TX (verbunden mit dem serial Chip) anzuzapfen. Wenn da noch Kabel dran hängt gibt's dieses Problem auch.
Sieht so aus. Was mich irritiert ist, dass deine Liste ander aussieht, als bei mir (Arduino IDE 1.8.19). Bei mir gibt es einen "Arduino Nano" (exakt so geschrieben).
weil da Bootloader installieren steht. heisst das dass der noch
nicht installiert?
Nein. Mit dem Befehl kannst du den Bootloader installieren (egal ob schon drauf oder nicht). Dazu brauchst du einen Programmieradapter.
Der COM port ist klar und wurde durch dmesg bestätigt: ttyUSB0
nur kann ich den nicht auswählen, wenn der Eintrag in IDE grau ist.
Dann repariere das doch erst mal. Vielleicht hast du ein andere Programm offen, das den Port blockiert. Oder du musst mal das USB Kabel an/an stecken. Oder den PC rebooten. Vielleicht war dein PC zur späten Stunde bereits genau so müde wie ich.
Fehlgeschlagenes Hochladen: Hochladefehler: exit status 1
Prüfe mal dein USB Kabel. Vielleicht ist es zu lang oder zu dünn, deine Elektronik zu versorgen.
Danke für eure ganzen Antworten.
Meine Linux IDE Version ist die aktuellste und die hat nicht dieselben Funktionen wie die Windows. So sehr ich Linux liebe, aber hier ist es besser für mich mit Windows weiterzumachen, allein schon weil die IDE Version neuer ist.
Den Fehler mit
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x91
konnte ich nun beheben (tools/processor/atmega328 old bootloader)
Status jetzt ist, dass es funktioniert!
Jetzt unter Windows ging es plötzlich ganz schnell.
Einzig den Code musste ich nochmal final abändern:
SoftwareSerial softSerial(/rx =/11, /tx =/10);
D.h. Tx also Pin 3 vom DFPlayer geht auf Rx also Pin 11 vom Arduino
Tx vom DFplayer geht auf Rx vom Arduino also Pin 10.
Das war mir nie richtig klar, daher nochmal hier für andere mit denselben Problemen.
Fazit: mit Linux hätte ich das nie geschafft. Ich denke es liegt daran, dass man dort in der aktuellen Version keinen old bootloader wählen kann und das war denke ich das Geheimnis. Die Tx Rx Werte hatte ich nämlich schon unter Linux getauscht zum Testen aber ohne Erfolg.
Danke an alle, die sich hier konstruktiv eingebracht haben und die Nerven behalten haben. Generell finde ich es wichtig den Ton zu wahren und nicht nur den TO als Idioten zu sehen, selbst wenn er einer sein sollte.
Einzig den Code musste ich nochmal final abändern:
SoftwareSerial softSerial(/rx =/11, /tx =/10);
D.h. Tx also Pin 3 vom DFPlayer geht auf Rx also Pin 11 vom Arduino
Tx vom DFplayer geht auf Rx vom Arduino also Pin 10.
Das war mir nie richtig klar
Deswegen die Anleitung genau lesen.
Im Endeffekt hast du nun ein mal (Dank Software serial) löten gespart.
Aber der wahre Grund war die im Vergleich Zum Beispiel falsche Verdrahtung des Player.
Ich denke es liegt daran,
dass man dort in der aktuellen Version keinen old bootloader wählen kann
Ich habe gerade mal den nightly build 2.2.2 für Linux herunter geladen, da sieht das so aus, wie im Anhang. In der Version 1.8.19 sieht es genau so aus. Es hätte mich auch schwer gewundert, wenn das unter Windows anders ist, als unter Linux.
Was ich nun nicht verstehe ist, warum die Auswahl des Boardes bei dir ganz anders aussieht und bei dir die Option für den "old" Bootloader fehlt. Welche Version ist das denn?
Weil das unter "Processor" steht und nicht unter "Board".
Das ist mir klar, siehe mein Screenshot 3. Aber Gio B. meinte, dass diese Option in der Linux Version fehlen würde, deswegen hat er auf Windows gewechselt. Ich kann das nicht nachvollziehen.
mit Linux hätte ich das nie geschafft. Ich denke es liegt daran,
dass man dort in der aktuellen Version keinen "old bootloader" wählen kann
Doch das kann man, und zwar schon seit Version 1.8.6 von 2018. Davor gab es den neuen Bootloader noch nicht, also war bei den älteren Versionen der "old bootloader" fest vorgegeben. Insofern ist die fehlende Auswahlmöglichkeit absolut sicher nicht deine Problemursache.
Leider hast du meine Frage nach der "problematischen" Version immer noch nicht beantwortet. Inzwischen habe ich herausgefunden, dass die letzte IDE mit diesem Aussehen die Version 1.0.5 von 2013 ist.
Also eine 10 Jahre alte Version!
So viel zur Aussage "Meine Linux IDE Version ist die aktuellste".
Jetzt mal eine ernst gemeinte Frage: Willst du mich verarschen?
im Anhang mal ein Screenshot. Ich habe Arduino mittels Anwendungsverwaltung installiert. Sollte dann die neuste sein. Trotzdem fehlt bei mir die Option mit old Bootloader. In der Windowsversion war sie da.
Weil das unter "Processor" steht und nicht unter "Board".
Das ist mir klar, siehe mein Screenshot 3. Aber Gio B. meinte, dass
diese Option in der Linux Version fehlen würde, deswegen hat er auf
Windows gewechselt. Ich kann das nicht nachvollziehen.
Nein, will ich nicht und ich wüsste auch nicht, warum ich das tun
sollte.
Ich glaub dir sogar das du es nicht mit Absicht machst!
Geh mal in die Konsole und poste die Ausgabe vom befehl "uname -a"...
Wenn deine IDE schon so oll ist, wie alt ist dann erst dein OS? Oder eher wie ungepflegt! (Da Kreuze ich die Finger das es kein SuSe ist...)
Planlos rumbasteln (und das auch noch als "Linuxer") bin ich von Freunden des Pinguin so absolut NICHT gewohnt!
Updates/Upgrades sind unter Linux ebenso essentiell wie unter Windows.
Sonst kannst du versuchen was du willst. Ohne aktuelle Software die auf dem gleichen Stand wie der Programmcode ist (gcc zb.) kannst du das vergessen!
Ich habe nochmal einen anderen Weg genutzt und alles mit einem Windows
Rechner gemacht:
Arduino IDE 2.2.1 installiert
CH430 Treiber installiert
Und gucke mal womit Du vergleichst: "arduino 2:1.0.5+dfsg2-4". Und die Bilder von Deinem Nano sind aus dem Katalog denn Dein Arduino-Klon hat einen CH430. Das Orginal (das Du gezeigt hast) hat einen FT232.
Meine Konsequenz: Vermeide Arduino-Benutzer, denn sie wissen nicht was sie tun.
Geh mal in die Konsole und poste die Ausgabe vom befehl "uname -a"...
Wenn deine IDE schon so oll ist, wie alt ist dann erst dein OS?
Ich bin kein Updatefeak das stimmt, aber so alt ist mein Linux nicht. Warum meine Linux IDE Version nicht dieselbe ist wie die Windows Version schiebe ich einfach mal darauf, dass die Entwickler sich mehr auf Windows konzentrieren, was legitim ist.
5.4.0-166-generic #183-Ubuntu SMP Mon Oct 2 11:28:33 UTC 2023
Ich habe nochmal einen anderen Weg genutzt und alles mit einem Windows
Rechner gemacht:
Arduino IDE 2.2.1 installiert
CH430 Treiber installiert
Und gucke mal womit Du vergleichst: "arduino 2:1.0.5+dfsg2-4". Und die
Bilder von Deinem Nano sind aus dem Katalog denn Dein Arduino-Klon hat
einen CH430. Das Orginal (das Du gezeigt hast) hat einen FT232.
Meine Konsequenz: Vermeide Arduino-Benutzer, denn sie wissen nicht was
sie tun.
Ja genau. Das Bild ist von Recihelt und da ging es mir nur um die Rx und Tx Pins. Ich habe einen Clon aus China, stimmt.
Wie schon gesagt, ich will kein Arduino Entwickler werden. Mir wurde bereits zur Last gelegt, dass ich das so einfach sage und mich weigere, mich tiefer als notwendig in die Materie einzuarbeiten. Allerdings steht für mich das Erreichen des Ziels im Vordergrund (Mp3 Player) und nicht das Werkzeug (Arduino). Das mag nicht schön klingen, aber ich finde das legitim. Man muss m.E. auch nicht Biologie studieren, um eine Karotte pflanzen zu dürfen.
Warum meine Linux IDE Version nicht dieselbe ist wie die Windows Version
schiebe ich einfach mal darauf, dass die Entwickler sich mehr auf
Windows konzentrieren, was legitim ist.
Auch wieder Quatsch.
Ich bekomme ganz offiziell, die aktuelle Arduino IDE ebenfalls für Linux.
Der einzige Grund für mich die ältere Version zu nutzen ist, das ich die IDE2 (2.x) sehr "langsam" finde und unter der 1.8.19 trotzdem alles funktioniert.
Das ist alles und nur für mich gültig! (oder gleichgesinnte, welche die neue Version ebenfalls als langsam empfinden) Andere mögen auch noch mehr oder andere Gründe haben.
Ich habe über die Anwendungsverwaltung installiert. Kann sein, dass da die Version nicht die letzte war. Ich installiere lieber so als per Webseite, geht irgendwie leichter.
Ich installiere lieber so als per Webseite, geht irgendwie leichter.
Vollkommen ok, unter der voraussetzung das sowohl dein System aktuell ist als auch die Software in den repo's.
Oder um es mal so zu sagen: apt-get update; apt-get dist-upgrade
Das sollte dich auf einen aktuelleren Stand bringen.
Sollte das nicht so einfach gehen, wird es Zeit eine Neuinstallation durchzuführen mit einem aktuelleren System. Kann ja das "gleiche" (Ubuntu, Debian, Mint, Parrot... was du eben möchtest) sein wie vorher.
Ich installiere lieber so als per Webseite, geht irgendwie leichter.
Vollkommen ok, unter der voraussetzung das sowohl dein System aktuell
ist als auch die Software in den repo's.
Oder um es mal so zu sagen: apt-get update; apt-get dist-upgrade
Das sollte dich auf einen aktuelleren Stand bringen.
Sollte das nicht so einfach gehen, wird es Zeit eine Neuinstallation
durchzuführen mit einem aktuelleren System. Kann ja das "gleiche"
(Ubuntu, Debian, Mint, Parrot... was du eben möchtest) sein wie vorher.
Danke für die Linux Tipps, sie sind sehr nett von dir gemeint. Das Ding ist, dass die Zig Videos, in denen das mit dem Arduino und DFPlayer gezeigt wurde, etwa 4 bis 5 Jahre alt waren. Damals waren die Versionen noch älter. Ich behaupte, dass es an etwas anderem liegt, dass ich unter Linux keinen old bootloader finde aber unter Windows doch. Z.b. steht bei mir install bootloader. Vielleicht muss das erst gemacht werden, keine Ahnung. Hatte ich mal hier gefragt, kam aber keine Antwort. Ist auch kein Problem. Ich muss mich jetzt um den PIR SR505 kümmern und dem genauen Code. Denn momentan spielt der DF los, auch wenn ich den PIR Signalkontakt gar nicht angeschlossen habe. Da lese ich mich mal ein bevor ich euch damit belästige.
Da hast du mit allem Recht was du sagst. Ich finde das spontane Beispiel mit der Karotte ziemlich gut. Zu wissen was für Boden sie braucht und wann pflanzen und Abstand etc. ist sicher gut und hilfreich. Das habe ich aber hier bzgl. Arduino gewusst würde ich sagen. Was teilweise von mir aber verlangt wurde war mir anzuschauen wie sinnbildlich die Genetik der Karotte aufgebaut ist, da mir das helfen wird eine gute Ernte zu erhalten. Das mag zwar sein, schießt aber für mich übers Ziel hinaus.
Ich muss mich jetzt um den PIR SR505 kümmern und dem genauen Code. Denn
momentan spielt der DF los, auch wenn ich den PIR Signalkontakt gar
nicht angeschlossen habe. Da lese ich mich mal ein bevor ich euch damit
belästige.
Und jetzt wird lustig. Anstelle gleich den dfplayer zu verwenden solltest du erst ein mal eine LED (nimm die bereits auf dem nano angebrachte an pin 13 dafür) mit dem PIR ein und ausschalten. Die Empfindlichkeit und Zeitdauer des Ausgang kannst du bei den meisten dieser Module über zwei kleine Potis einstellen.
Dann änderst du den Code so, daß er das für dich gewünschte Verhalten (Play, Stop, nächster Titel, Lautstärke usw..) an der LED wiederspiegelt. Danach erst bist du (hoffentlich) sicher genug beides zusammen zu führen.
Dabei meine ich das ganze wirklich logisch zusammen zu bringen. Verfrickelter code der "irgendwie" funktioniert, führt früher oder später zu Fehlern.
Am Ende kanns ja nur die Sortware-Uart gewesen sein und die falschen PINs zu Initialisierung. Wenn man aber die Ausgabe der serial als Initialsiserungssequenz des Players ansieht, muss man sich dann nicht wundern, wenn man nicht weiterkommt? Es liegt definitiv nicht an irgendwelchen Versionen, die so alt sein können, wie sie wollen. Davon ändert sich keine TimeSlot der SW-Uart oder die Baudrate. Man muss hier eben tatsächlich die richtigen Pins nehmen. Halt einen zum Senden Richtung Player und einen zum Empfang für die Bestätigungen, die der Player wohl ausgibt.
Und wenn da steht, nimm PIN10 und nimm PIN11, dann nimmt man die halt. Wenns nicht geht, tauscht man beide PINs ( RX/TX wird ja ganz gern mal verwechselt). ZUr not hängt man sich da n Kopfhöhrer mit 100nF davor an die PINS und hört sich halt an, wo Daten rauskommen.
Wenns dann immernoch nicht geht, kann man weitersehen. Aber man kann auch alles auf die SW-Versionen schieben. Gerade dieses Arduino-Habitat macht ja nun schon fast alles von allein und nimmt den User komplett mit.
Es liegt definitiv nicht an irgendwelchen Versionen, die so alt sein
können, wie sie wollen.
Und wie willst du dir da so sicher sein? Ein originaler arduino, mit dem "neuen bootloader" (optiboot) wird ziemlich sicher nicht mit einer alten IDE sprechen die ATmegaBOOT als bootloader erwartet.
Schon deshalb nicht weil sie unterschiedliche Geschwindigkeiten erwarten...
Dabei meine ich das ganze wirklich logisch zusammen zu bringen.
Verfrickelter code der "irgendwie" funktioniert, führt früher oder
später zu Fehlern.
Ich habe den PIR an 5V angeschlossen und den Signal Pin gemessen. Sobald der PIR Strom bekommt (ohne Bewegung), geht der Signal Pin für ca 20 Sekunden auf 3,3V. Daher spielt der DFPlayer auch sofort los. Erst nach diesen 20 Sekunden ist der PIR auf 0V und geht erst wieder bei Bewegung an. Ich muss mal schauen, wie ich als nächstes weitermache. Es sind immer Schritte in die richtige Richung, aber sehr kleine Schritte. So einfach wie auf Youtube ist es auf jeden Fall nicht.
Mein SR505 hat übrigens keine Potis drauf. Mein erstes Video hat diesen 505er verwendet, dann habe ich ihn bestellt, da ich dachte damit läuft es. War ein Fehler meinerseits.
Ich habe den PIR an 5V angeschlossen und den Signal Pin gemessen. Sobald
der PIR Strom bekommt (ohne Bewegung), geht der Signal Pin für ca 20
Sekunden auf 3,3V.
Da hätte ich 2 Lösungen:
Wenn der Arduino und der PIR an derselben Spannungsquelle hängt, kannst Du in der Funktion setup(), welche lediglich einmal beim Start ausgeführt wird, am Ende einfach 30 Sekunden warten, bevor es weitergeht.
In der Funktion loop(), da wo Du das PIR-Signal checkst, erst die Funktion millis() aufrufen. Ist der Return-Wert kleiner als 30000, das PIR-Signal ignorieren. Das einzige Problem hier: Alle 27 Tage wird der millis-Wert wieder zurückgesetzt und deshalb wird der PIR dann wieder für 30 Sekunden ignoriert. Das könnte man aber mit einem Flag, welches man beim ersten Mal setzt, abfangen - sollte diese Unschönheit tatsächlich stören.
Es reicht, wenn Du einen der beiden Punkte umsetzt.
Warum meine Linux IDE Version nicht dieselbe ist wie die Windows Version
schiebe ich einfach mal darauf, dass die Entwickler sich mehr auf
Windows konzentrieren, was legitim ist.
Neun, der Grund ist ein ganz anderer.
Deine IDE ist 10 Jahre alt, weil du eine 10 Jahre alte IDE installiert hast. Die aktuelle Version für Linux ist genau die gleiche, wie auch für Windows. Ich habe dir doch zum Beweis Screenshots gezeigt, denkst du die habe ich mit einem Malprogramm erstellt?
Ich habe über die Anwendungsverwaltung installiert.
Ich installiere lieber so als per Webseite, geht irgendwie leichter.
Normalerweise tue ich das auch, denn es ist ein einfach und meist auch der sicherste weg, keine Probleme zu bekommen. Doch gerade bei Entwicklungs-Tools hinken diese dem aktuellen Stand oft hinterher. So schlimm wie es in deinem Fall ist, habe ich allerdings noch nie erlebt.
Das Ding ist, dass die Zig Videos, in denen das mit dem
Arduino und DFPlayer gezeigt wurde, etwa 4 bis 5 Jahre alt
waren. Damals waren die Versionen noch älter.
Ich bezweifle, dass in einem 5 Jahre alten Video eine 10 Jahre alte Arduino Version verwendet wurde.
Ich behaupte, dass es an etwas anderem liegt, dass ich unter
Linux keinen old bootloader finde aber unter Windows doch.
Liest du überhaupt, was ich dir geschrieben habe? Die Bootloader Einstellung kann nicht die Problemursache sein, denn deine alte Arduino Version kennt nur den alten Bootloader, der sich auf deinem Arduino Nano befindet. Das passt zusammen.
Z.b. steht bei mir install bootloader. Vielleicht muss das erst
gemacht werden, keine Ahnung. Hatte ich mal hier gefragt, kam
aber keine Antwort.
Gerade dieses Arduino-Habitat macht ja nun schon fast
alles von allein und nimmt den User komplett mit.
Wie du siehst verleitet es Leute zum Programmieren, die das nicht erlernen wollen.
Man muss das mal ganz klar sagen: Programmieren heißt, sich Wochenlang mit klitzekleinen Details zu beschäftigen, hundert bis tausende Seiten (meist englische) Dokumentation zu lesen und hunderte Fehlversuche zu ertragen, bis man zum Ziel kommt. Wer dazu nicht bereit ist, soll es besser sein lassen.
Sollte das nicht so einfach gehen, wird es Zeit eine Neuinstallation
durchzuführen mit einem aktuelleren System. Kann ja das "gleiche"
(Ubuntu, Debian, Mint, Parrot... was du eben möchtest) sein wie vorher.
Wie jetzt, ich dachte, dass nur die Windows-Leute ständig neu installieren würden.
Wenn der Arduino und der PIR an derselben Spannungsquelle hängt
Wieso soll jetzt der PIR bespielt werden, solange der Arduino noch nicht mit dem Player kommuniziert? Aktuell geht ja wohl garnichts mehr, noch nicht einmal, ein "Blink.ino" hochzuladen.
Liest du überhaupt, was ich dir geschrieben habe? Die Bootloader
Einstellung kann nicht die Problemursache sein, denn deine alte Arduino
Version kennt nur den alten Bootloader, der sich auf deinem Arduino Nano
befindet. Das passt zusammen.
Er hat in seinem Chaos irgendwas verbeult. Zu Beginn ging Compilieren und Hochladen, lediglich der Programmkot spielte nicht. Jetzt geht auf einmal garnichts mehr?
Gerade dieses Arduino-Habitat macht ja nun schon fast
alles von allein und nimmt den User komplett mit.
Wie du siehst verleitet es Leute zum Programmieren, die das nicht
erlernen wollen.
Man muss das mal ganz klar sagen: Programmieren heißt, sich Wochenlang
mit klitzekleinen Details zu beschäftigen, hundert bis tausende Seiten
(meist englische) Dokumentation zu lesen und hunderte Fehlversuche zu
ertragen, bis man zum Ziel kommt.
Übertreibe mal nicht mit "tausende Seiten Doku". Axel hat schon recht, mit Arduino kommt man deutlich einfacher als in anderen Umgebungen um Ziel.
Recht hast Du mit "hunderte Fehlversuchen", die muß man ertragen und dann gezielt nach deren Ursachen suchen, also lesen.
Und ja, wie Kilo schrieb, ertsmal klein anfangen: LED blinken, Lauflicht bauen, Taster abfragen und sich so einen Grundstock einfacher Programme zuzulegen.
Schau dir mal die Doku eines STM32F4 an. Datasheet, Reference Manual, Errata. Die Doku von Arm zum CPU Kern und Befehlssatz lassen wir mal außen vor. Und C/C++ kann man einfach so (hust).
Schau dir mal die Doku eines STM32F4 an. Datasheet, Reference Manual,
Errata.
Die schaue ich mir nicht an, weil ich Arduino mit ATMega328 verwende. Und auch die schaue ich nicht an, weil mich Arduino-C++ weitestgehend von der Hardware entkoppelt.
Ich schreibe "setze D13 als Ausgang und auf low" und "wenn A5 größer 500, setze D13 high". Fertig, die Register, die Abfrage des ADC etc. nimmt mir das Arduino-Framwork ab. Das mag Dir nicht gefallen, aber genau das begründet doch den Erfolg von Arduino.
Meine erste Begegnung mit Prozessoren war der 6504 / 6502 in Assembler, das hat Tage gedauert, mit einem einfachen Schalter an Port-x eine LED an Port-y ein-/ausschalten zu können. Das will ich mir heute nicht mehr antun müssen.
Später hatte ich eine eigene Hardware mit 68HC805, ähnlich dem (damals noch nicht erfundenen) A*-Uno und damit einige Prüfplätze ausgerüstet, ebenfalls in Assembler geschrieben. Jahre später, Hobbybereich, hatte ich keine Lust, mich wieder einzuarbeiten und habe mir einen Uno gekauft.
Die A*-IDE holen, Treiber installieren, etwas lesen ... müsste so 3 Stunden gedauert haben, bis meine 5 LEDs Lauflicht machten.
Du kannst noch so viel strampeln, wer nicht total dämlich ist, hat mit Arduino recht schnell erste Erfolge.
Und C/C++ kann man einfach so (hust).
Das ist in der Tat ein Lernprozess, wo man durch muss und ich erhebliche Defizite habe. Aber auch der ist nicht beliebig schwer, ich habe mehr als ein Gerät aufgebaut, was seine Zwecke zuverlässig erfüllt.