Arduino-Beispielcode (Romeo V2: Fahren + Sprach-Motivation)
// GoMaker × DFRobot — Gute-Laune-Roboter
// Hardware: Romeo V2 (DFR0225), 2WD Chassis (ROB0005), DFPlayer (DFR0299), Speaker (FIT0502), Button (DFR0029 optional)
//
// Romeo V2 Motor-Pins (PWM-Modus, lt. DFRobot):
// E1=D5 (M1 Speed), E2=D6 (M2 Speed), M1=D4 (Dir), M2=D7 (Dir)
#include <SoftwareSerial.h>
#include "DFRobotDFPlayerMini.h"
const int E1 = 5; // M1 Speed (PWM)
const int E2 = 6; // M2 Speed (PWM)
const int M1 = 4; // M1 Direction
const int M2 = 7; // M2 Direction
const int PIN_BTN = 2; // optionaler Trigger (nach GND, Pullup aktiv)
SoftwareSerial mp3Serial(11, 12); // RX, TX (DFPlayer RX<-11, TX->12)
DFRobotDFPlayerMini mp3;
unsigned long lastSpeak = 0;
const unsigned long speakEveryMs = 15000; // alle 15 s ermutigen
uint8_t nextTrack = 1; // 1..5 (zu deinen Dateien passend)
void motorsStop() {
digitalWrite(E1, LOW);
digitalWrite(E2, LOW);
}
void motorsForward(uint8_t spdL, uint8_t spdR) {
analogWrite(E1, spdL); digitalWrite(M1, HIGH);
analogWrite(E2, spdR); digitalWrite(M2, HIGH);
}
void motorsBackward(uint8_t spdL, uint8_t spdR) {
analogWrite(E1, spdL); digitalWrite(M1, LOW);
analogWrite(E2, spdR); digitalWrite(M2, LOW);
}
void motorsTurnLeft(uint8_t spd) {
analogWrite(E1, spd); digitalWrite(M1, LOW);
analogWrite(E2, spd); digitalWrite(M2, HIGH);
}
void motorsTurnRight(uint8_t spd) {
analogWrite(E1, spd); digitalWrite(M1, HIGH);
analogWrite(E2, spd); digitalWrite(M2, LOW);
}
void saySomething() {
mp3.volume(25); // 0..30
mp3.play(nextTrack); // 0001.mp3 → Track 1
nextTrack++; if (nextTrack > 5) nextTrack = 1;
}
void setup() {
for (int p : {E1,E2,M1,M2}) pinMode(p, OUTPUT);
pinMode(PIN_BTN, INPUT_PULLUP);
mp3Serial.begin(9600);
Serial.begin(115200);
if (!mp3.begin(mp3Serial)) {
Serial.println("DFPlayer nicht gefunden – Verkabelung/SD pruefen!");
} else {
mp3.volume(25);
Serial.println("DFPlayer bereit.");
}
motorsStop();
lastSpeak = millis();
}
void loop() {
// Einfaches "Herumfahren": vorwärts → kleiner Bogen → Stopp → rückwärts → Drehen …
motorsForward(160, 180); delay(1500);
motorsTurnLeft(160); delay(500);
motorsStop(); delay(300);
motorsBackward(140, 140); delay(800);
motorsTurnRight(170); delay(600);
motorsStop(); delay(400);
// Zeit-/Taster-Trigger für Motivation
if (millis() - lastSpeak > speakEveryMs) {
saySomething();
lastSpeak = millis();
}
if (digitalRead(PIN_BTN) == LOW) {
delay(20); // Entprellen
if (digitalRead(PIN_BTN) == LOW) {
saySomething();
while(digitalRead(PIN_BTN)==LOW) delay(10);
}
}
}
Sprachinhalte: Nimm 3–5 kurze MP3-Clips auf (z. B. „Alles wird gut!“, „Super gemacht!“, „Du schaffst das!“) und lege sie als 0001.mp3
… 0005.mp3
auf die microSD. Lautstärke im Code mit mp3.volume()
.