Arduino - Musik abspielen und gleichzeitig LEDs steuern?

In meinem Projekt möchte ich mit einem Elegoo Uno R3 einen mini DVPlayer von AZDelivery (MP3-Player auf kleiner Platine) bedienen und einen Song abspielen.

Gleichzeitig sollen zwei LEDs nach einem Muster blinken.

Ist soviel Multitasking mit irgendeinem Workaround möglich?

Hier der Code, wie müsste ich das mit den LEDs einpflegen?

/***************************************************


DFPlayer - A Mini MP3 Player For Arduino
 <https://www.dfrobot.com/product-1121.html>


#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"


SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);


void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  
  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
  
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));

    while(true){
      delay(0); // Code to compatible with ESP8266 watch dog.
    }
  }
  Serial.println(F("DFPlayer Mini online."));
  
  myDFPlayer.volume(30); // Set volume 0-30
  myDFPlayer.play(1);  //Play first mp3
}


void loop()
{
  static unsigned long timer = millis();
  
  if (millis() - timer > 3000) {
    timer = millis();
 //   myDFPlayer.next();  //Play next mp3 eve 
  }
  
  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read()); 
  }
}


void printDetail(uint8_t type, int value){
  switch (type) {
    case TimeOut:
      Serial.println(F("Time Out!"));
      break;
    case WrongStack:
      Serial.println(F("Stack Wrong!"));
      break;
    case DFPlayerCardInserted:
      Serial.println(F("Card Inserted!"));
      break;
    case DFPlayerCardRemoved:
      Serial.println(F("Card Removed!"));
      break;
    case DFPlayerCardOnline:
      Serial.println(F("Card Online!"));
      break;
    case DFPlayerPlayFinished:
      Serial.print(F("Number:"));
      Serial.print(value);
      Serial.println(F(" Play Finished!"));
      break;
    case DFPlayerError:
      Serial.print(F("DFPlayerError:"));
      switch (value) {
        case Busy:
          Serial.println(F("Card not found"));
          break;
        case Sleeping:
          Serial.println(F("Sleeping"));
          break;
        case SerialWrongStack:
          Serial.println(F("Get Wrong Stack"));
          break;
        case CheckSumNotMatch:
          Serial.println(F("Check Sum Not Match"));
          break;
        case FileIndexOut:
          Serial.println(F("File Index Out of Bound"));
          break;
        case FileMismatch:
          Serial.println(F("Cannot Find File"));
          break;
        case Advertise:
          Serial.println(F("In Advertise"));
          break;
        default:
          break;
      }
      break;
    default:
      break;
  }
}


Arduino, Arduino Uno, Elegoo
Warum gibt mir Arduino eine fehlermeldung raus?
#include <SoftwareSerial.h>
#include <XInput.h>


SoftwareSerial bluetooth(10, 11);  // RX, TX Pins für das HC-05 Bluetooth-Modul
XINPUT_STATE state;


const int relayPin1 = 3;  // Pin für Relay 1 (Motor 1 vorwärts)
const int relayPin2 = 4;  // Pin für Relay 2 (Motor 1 rückwärts)
const int relayPin3 = 5;  // Pin für Relay 3 (Motor 2 vorwärts)
const int relayPin4 = 6;  // Pin für Relay 4 (Motor 2 rückwärts)
const int relayPin5 = 7;  // Pin für Relay 5 (Motor 3 vorwärts)
const int relayPin6 = 8;  // Pin für Relay 6 (Motor 3 rückwärts)
const int relayPin7 = 9;  // Pin für Relay 7 (Motor 4 vorwärts)
const int relayPin8 = 10; // Pin für Relay 8 (Motor 4 rückwärts)


void setup() {
  Serial.begin(9600);
  bluetooth.begin(9600);
  
  pinMode(relayPin1, OUTPUT);
  pinMode(relayPin2, OUTPUT);
  pinMode(relayPin3, OUTPUT);
  pinMode(relayPin4, OUTPUT);
  pinMode(relayPin5, OUTPUT);
  pinMode(relayPin6, OUTPUT);
  pinMode(relayPin7, OUTPUT);
  pinMode(relayPin8, OUTPUT);
}


void loop() {
  while (bluetooth.available()) {
    XInputGetState(0, &state);
    
    // Lenkung mit dem linken Joystick
    int leftStickX = state

Das war der code und dat die fehler meldung:
C:\Users\joshu\Desktop\elegoo starter pack\Deutsch\code\Lesson 4 RGB LED\RGB_LED\RGB_LED.ino:5:1: error: 'XINPUT_STATE' does not name a type
 XINPUT_STATE state;
 ^~~~~~~~~~~~
C:\Users\joshu\Desktop\elegoo starter pack\Deutsch\code\Lesson 4 RGB LED\RGB_LED\RGB_LED.ino: In function 'void loop()':
C:\Users\joshu\Desktop\elegoo starter pack\Deutsch\code\Lesson 4 RGB LED\RGB_LED\RGB_LED.ino:32:24: error: 'state' was not declared in this scope
     XInputGetState(0, &state);
                        ^~~~~
C:\Users\joshu\Desktop\elegoo starter pack\Deutsch\code\Lesson 4 RGB LED\RGB_LED\RGB_LED.ino:32:24: note: suggested alternative: 'static'
     XInputGetState(0, &state);
                        ^~~~~
                        static
C:\Users\joshu\Desktop\elegoo starter pack\Deutsch\code\Lesson 4 RGB LED\RGB_LED\RGB_LED.ino:32:5: error: 'XInputGetState' was not declared in this scope
     XInputGetState(0, &state);
     ^~~~~~~~~~~~~~
C:\Users\joshu\Desktop\elegoo starter pack\Deutsch\code\Lesson 4 RGB LED\RGB_LED\RGB_LED.ino:32:5: note: suggested alternative: 'XInputControl'
     XInputGetState(0, &state);
     ^~~~~~~~~~~~~~
     XInputControl
C:\Users\joshu\Desktop\elegoo starter pack\Deutsch\code\Lesson 4 RGB LED\RGB_LED\RGB_LED.ino:35:22: error: expected '}' at end of input
     int leftStickX = state
                      ^~~~~
C:\Users\joshu\Desktop\elegoo starter pack\Deutsch\code\Lesson 4 RGB LED\RGB_LED\RGB_LED.ino:35:22: error: expected '}' at end of input
Mehrere Bibliotheken wurden für "SoftwareSerial.h" gefunden
  Benutzt: C:\Users\joshu\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\SoftwareSerial
  Nicht benutzt: C:\Users\joshu\Documents\Arduino\libraries\VEGA_SoftwareSerial
exit status 1

Compilation error: 'XINPUT_STATE' does not name a type
XBOX Controller, Arduino Uno
Arduino Library hinzufügen verursacht Fehler?

Ich grüße euch!

Kurz und knapp: Wenn ich

#include "SD.h"
#include <SPI.h>
#include "DHT.h" 

oder gar nur

#include "SD.h"

in mein Projekt inkludieren will, findet es mein Display nicht mehr!

Ich möchte zwei Programme zusammenfassen: Temperatur + Data Logger und Display. Einzeln funktioniert es, doch wenn ich beim Display "Programm" die Library von der SD-Karte hinzufügen möchte, findet er kein Display mehr (SSD1306 allocation failed).

Ich bin am Ende meines Wissensschatzes und hoffe, ihr könnt helfen.

Programm vom Temperatur Datalogger
https://microcontrollerslab.com/dht22-data-logger-arduino-micro-sd-card/?fbclid=IwAR3eXzNh_y7-6tNhh7Qoh_wpzHY-_6lM7BwR1HcT2MaBO7rzwuswTJzs34A

Programm vom Display

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define SCREEN_ADDRESS 0x3C

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

#define NUMFLAKES   10 // Number of snowflakes in the animation example
#define LOGO_HEIGHT  16
#define LOGO_WIDTH  16

static const unsigned char PROGMEM logo_bmp[] =
{
  0b00000000, 0b11000000,
  0b00000001, 0b11000000,
  0b00000001, 0b11000000,
  0b00000011, 0b11100000,
  0b11110011, 0b11100000,
  0b11111110, 0b11111000,
  0b01111110, 0b11111111,
  0b00110011, 0b10011111,
  0b00011111, 0b11111100,
  0b00001101, 0b01110000,
  0b00011011, 0b10100000,
  0b00111111, 0b11100000,
  0b00111111, 0b11110000,
  0b01111100, 0b11110000,
  0b01110000, 0b01110000,
  0b00000000, 0b00110000
};

void setup()
{
  Serial.begin(9600);
  // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
  
  if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 allocation failed"));

    for(;;); // Don't proceed, loop forever
  }

  // Show initial display buffer contents on the screen --
  // the library initializes this with an Adafruit splash screen.
  display.display();
  delay(2000); // Pause for 2 seconds
  // Clear the buffer
  display.clearDisplay();
  // Draw a single pixel in white
  display.drawPixel(10, 10, SSD1306_WHITE);
  delay(20000);
  display.clearDisplay();
  // Show the display buffer on the screen. You MUST call display() after
  // drawing commands to make them visible on screen!
  display.display();
  delay(2000);
}

void loop()
{
}
Computer, programmieren, Arduino, Arduino Uno
Tasterstatus HIGH schalten ?

Hallo Leute bei dem unten Angegebenen Sketch sieht man das wen count richtig ist und der Taster gedrückt ist die LEDS in Reihenfolge blinken sollen.

Ich möchte das die LEDS nicht mehr aufhören zu blinken was muss ich da noch ergänzen?

int taster1=7;
int taster2=8;


int tasterstatus2=0;


int led1=12;
int led2=11;
int led3=10;
int led4=9;







bool oldButtonState = HIGH;
bool newButtonState;
int count = 0;


void setup() {
 pinMode (taster1,INPUT);
pinMode (taster2,INPUT);




pinMode (led1,OUTPUT);
pinMode (led2,OUTPUT);
pinMode (led3,OUTPUT);
pinMode (led4,OUTPUT);





}


void loop() {
  newButtonState = digitalRead(taster1);
  
  tasterstatus2 = digitalRead(taster2);
  
  if (oldButtonState == HIGH && newButtonState == LOW) {
    count++;
    oldButtonState = newButtonState;


    if (count == 1) {
      digitalWrite(led1, HIGH);
    }
    if (count == 2) {
      digitalWrite(led1, LOW);
      digitalWrite (led2,HIGH);
    }


    if (count == 3 ){
      digitalWrite (led2,LOW);
      digitalWrite (led3,HIGH);
    }


    if (count == 4){
      digitalWrite (led3,LOW);
      digitalWrite (led4,HIGH);
    }


    if (count == 5){
      digitalWrite (led4,LOW);
      count = 0;
    }


if ((tasterstatus2 == HIGH) && (count == 1)){
  
  
  digitalWrite (led1,HIGH);
  digitalWrite (led2,LOW);
  digitalWrite (led3,LOW);
  digitalWrite (led4,LOW);
  delay (1000);


  digitalWrite (led1,LOW);
  digitalWrite (led2,HIGH);
  delay (1000);
  digitalWrite (led2,LOW);
  digitalWrite (led3,HIGH);
  delay (1000);
  digitalWrite (led3,LOW);
  digitalWrite (led4,HIGH);
  delay (1000);
  digitalWrite (led4,LOW);
}








    if ((tasterstatus2 == HIGH ) &&( count == 2)){


      digitalWrite (led1,LOW);
      digitalWrite (led2,HIGH);
      digitalWrite (led3,LOW);
      digitalWrite (led4,LOW);
      delay (1000);
      digitalWrite (led3,HIGH);
      digitalWrite (led2,LOW);
      delay (1000);
      digitalWrite (led3,LOW);
      digitalWrite (led4,HIGH);
      delay (1000);
      digitalWrite (led4,LOW);
      digitalWrite (led1,HIGH);
      delay (1000);
      digitalWrite (led1,LOW);
      
    }




    if ((tasterstatus2 == HIGH) && (count == 3)){


digitalWrite (led1,LOW);
digitalWrite (led2,LOW);
digitalWrite (led3,HIGH);
digitalWrite (led4,LOW);
delay (1000);


digitalWrite (led3,LOW);
digitalWrite (led4,HIGH);
delay (1000);


digitalWrite (led4,LOW);
digitalWrite (led1,HIGH);
delay (1000);


digitalWrite (led1,LOW);
digitalWrite(led2,HIGH);
delay (1000);


digitalWrite (led2,LOW);
delay (1000);
}


if ((tasterstatus2 == HIGH) && (count == 4)){


  digitalWrite (led1,LOW);
  digitalWrite (led2,LOW);
  digitalWrite (led3,LOW);
  digitalWrite (led4,HIGH);
  delay (1000);


  digitalWrite (led4,LOW);
  digitalWrite (led1,HIGH);
  delay (1000);


  digitalWrite (led1,LOW);
  digitalWrite (led2,HIGH);
  delay (1000);


  digitalWrite (led2,LOW);
  digitalWrite (led3,HIGH);
  delay (1000);


  digitalWrite (led3,LOW);
  
}
    
        
 
Technik, Arduino, schalten, Arduino Uno
Welcher Sensor für Arduino Uno misst G-Kräfte?

Guten Abend Zusammen,

Im Rahmen eines Abschlussprojektes bin ich gerade dabei, die Karosserie eines ferngesteuerten Autos zu verbessern. Verbessern bedeutet, dass der Spoiler sich den Fahrbedingungen anpassen soll. Wenn man bremst, soll sich dieser z.B aufstellen. Wenn man Beschleunigt oder steht, soll der Spoiler wieder in die Ursprüngliche Position wechseln. Wie das alles Funktionieren soll steht fest, es fehlt wirklich nur noch dieser Sensor. Alles andere ist schon ready To go.

Mir ist natürlich klar, dass das bei einem Spielzeugauto nicht viel ausmacht, darum geht es auch nicht. Meine Frage ist, ob Ihr eventuell Sensoren kennt, welche diese Kräfte messen können. Diese Sensoren müssen mit dem Arduino uno kompatibel sein.

Zuerst habe ich mir den Sensor mit der Bezeichnung "GY-61" zugelegt, welcher sich aber als ungeeignet herausstellt, da dieser lediglich Veränderungen seiner Lage messen kann. Da der Sensor am Ende statisch verbaut werden soll und ich einen richtigen Gyrosensor brauche und keinen Winkelmesser, fällt dieser leider raus.

Meine Frage an Euch: Kennt Ihr eventuell Sensoren, welche mir bei der Lösung helfen könnten? Ich habe bereits einen weiteren Sensor mit der Bezeichnung "MPU-6050" gefunden, welcher passen könnte. Jedoch wollte ich mich zuerst ein ein Paar erfahrene Nutzer wenden bevor ich wieder einen Sensor kaufe, rumprobiere und dieser am Ende wieder nicht funktioniert. Leider stehe ich auch unter Zeitdruck, da das Projekt bis Ende November fertig sein muss.

Ich freue mich sehr auf Euren Ideen, Erfahrungen und Tipps! :)

Mikrocontroller, Arduino, Sensoren, G-Kräfte, g-kraft, Arduino Uno
Technik in der Schule erklärt?

Es gibt so einige Dinge bei denen ich mich Frage, wieso sie nicht in der Schule gelehrt werden... Aber was mich besonders beschäftigt ist allgemeinwissen über Technik...

Man hört immernur "die Jugend, die wächst ja jetzt mit der Technik auf, die können das" und so ein Zeugs... Dabei merke ich (16 Jahre) selbst, dass es eigentlich 2 Gruppen von Jugendlichen gibt;

1. Die, die es selbst interessiert und die sich damit beschäftigen

2. Und die, die einfach keinen Spaß dran haben, glücklich sind wenn alles funktioniert und sich dann halt ein iPhone oder so kaufen um möglichst wenig einstellen zu müssen...

(Und ja natürlich gibt es auch andere, die eben einfach schnell lernen oder einfach intuitiv wissen, wie etwas zu bedienen ist... Aber darum geht es jetzt Mal nicht...)

Ich habe neulich selbst erlebt wie mehrere Leute in meinem alter es nicht geschafft haben einen Computer anzuschließen und einzurichten... Da hab ich mich gefragt, wieso sowas eigentlich nicht Mal in der Schule behandelt wird...

Natürlich nicht einfach als "so schließt man einen PC an"... Aber man könnte sich ja wenigstens Mal eine Stunde in der Woche mit Dingen aus dem echten Leben beschäftigen (statt Pflicht Sport, Kunst oder Religion 2 Stunden die Woche)...

Wieso werden einem nicht Mal Steckerstandards oder sowas erklärt... Für viele Leute sind das einfach irgendwelche Stecker...

Ich finde es einfach traurig zu sehen, wie junge Menschen TECHNIKER holen, damit der Fernseher angeschlossen wird (nicht, weil sie keine Zeit hätten, sondern einfach, weil sie nicht wissen wie man ihn EINRICHTET und anschließt (hinstellen und montieren Mal außer acht gelassen))

Computer, Smartphone, Allgemeinwissen, Schule, Technik, Elektronik, System, Alltag, Gaming, Alltagsprobleme, Arduino, Elektriker, Kritik, modern, Python, Schulsystem, Technologie, Raspberry Pi, Raspberry, Ausbildung und Studium, Arduino Uno
Zweimal DHT22 Sensor verwenden?

Hallo,

ich baue gerade eine Art "Wetterstation" mit meinem Arduino dazu verwende ich zweimal den DHT22 um die Temperatur und Luftfeuchtigkeit innen und außen zu messen. Ich habe nun das Problem, dass ich einen Befehl (Fett gedruckt) nicht einfach doppelt verwenden kann. Was macht dieser Befehl ? Wie kann ich einfach beide Sensoren verwenden?

Danke im Voraus!

Code:

#include <SimpleDHT.h>

#include <LiquidCrystal.h>

int pinDHT22in = 8;

int pinDHT22out = 9;

int Sensorwert;

const uint8_t rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

SimpleDHT22 dht22(pinDHT22in);

void setup(){

 Serial.begin(115200);             // Damit unsere Werte später im seriellen Monitor angezeigt werden können, legen wir zuerst die Baudrate 9600 fest.

 pinMode( 0 , INPUT);             // Pin 0 dient nun als Input

 lcd.begin(20, 4);              //Im Setup wird angegeben, wie viele Zeichen und Zeilen verwendet werden. Hier: 16 Zeichen in 4 Zeilen.

 lcd.clear();

}

void loop()

{

   Sensorwert = analogRead(0);       // Zuerst wird der Wert (gas) am Pin A0 ausgelesen...

     

   Serial.print("Der erfasste Wert lautet : "); 

   Serial.println(Sensorwert, DEC);     //... und anschließend im seriellen Monitor als Dezimalzahl ausgegeben.

   Serial.println();

   lcd.setCursor(0, 0);

   lcd.print("Messwert (gas): ");

   lcd.print(Sensorwert);

   delay(1000);

      float temperature = 0;

      float humidity = 0;

      int err = SimpleDHTErrSuccess;

      if((err=dht22.read2(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess){

       lcd.setCursor(0, 1);

       lcd.print("Read DHT22 failed, err=");

       lcd.print(err);

       delay(2000);

       return;

}

     lcd.setCursor(0, 1);

     lcd.print("Temp(in): ");

     lcd.print((float)temperature);

     lcd.print(" *C");

     lcd.setCursor(0, 2);

     lcd.print("Luftfeuchte: ");

     lcd.print((float)humidity);

     lcd.print("%");

     delay(2500); // DHT22 sampling rate is 0.5HZ.   

 delay(1000);             

Computer, Technik, programmieren, Arduino, Sensor, Arduino Uno
Arduino funktioniert nicht?

Hallo zusammen,

Ich wollte eben wieder etwas mit meinem Arduino machen. Um genau zu sein, einen einfachen 9g Servo steuern.

Allerdings lässt sich nichts auf den Arduino schreiben.

Com-Anschlussnummer habe ich jetzt auch schon mehrmals geändert. Auchanders Kable, anderen USB Port usw. Hat aber nichts gebracht.

(Was mir übrigens auch noch aufgefallen ist: Die grüne LED auf dem Arduino leuchtet durchgehend und blinkt nicht beim versuch ihn zu beschreiben.)

Bekomme immer diese Fehlermeldung:

avrdude: ser_open(): can't open device "\\.\COM3": Das System kann die angegebene Datei nicht finden.




avrdude: ser_drain(): read error: Das Handle ist ung�ltig.




avrdude: ser_send(): write error: sorry no info avail
avrdude: stk500_send(): failed to send command to serial port
avrdude: ser_recv(): read error: Das Handle ist ung�ltig.




avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: ser_send(): write error: sorry no info avail
avrdude: stk500_send(): failed to send command to serial port
avrdude: ser_recv(): read error: Das Handle ist ung�ltig.




Der ausgewählte serielle Port 
 ist nicht vorhanden oder das Board ist nicht angeschlossen
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: ser_send(): write error: sorry no info avail
avrdude: stk500_send(): failed to send command to serial port
avrdude: ser_recv(): read error: Das Handle ist ung�ltig.




avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: ser_send(): write error: sorry no info avail
avrdude: stk500_send(): failed to send command to serial port
avrdude: ser_recv(): read error: Das Handle ist ung�ltig.




avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: ser_send(): write error: sorry no info avail
avrdude: stk500_send(): failed to send command to serial port
avrdude: ser_recv(): read error: Das Handle ist ung�ltig.




avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: ser_send(): write error: sorry no info avail
avrdude: stk500_send(): failed to send command to serial port
avrdude: ser_recv(): read error: Das Handle ist ung�ltig.




avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer


Wäre sehr dankbar, wenn mir jemand helfen könnte.

Computer, Software, Microsoft, Programm, Netzteil, Hardware, Elektronik, programmieren, Elektrik, Mikrocontroller, Gaming, Cplusplus, Motor, Arduino, CPP, Visual Studio, Servo, Arduino Uno, Arduino IDE
Arduino Lauflicht Programmierung?

Hallo ich bin Neu hier und auch neu in der Materie Arduino. Ich hoffe hier kann mir einer helfen- Ich möchte ein Lauflicht (wie auf Video:https://www.instagram.com/p/CHOOV51Fj_T/?igshid=tudc3clo118m) in Kaltweiss für zwei Led Bänder programmieren die Parallel zueinander anlaufen sollen. Dazu habe ich eine gewisse Schaltung aufgebaut (siehe Bild) die via Pulldown-Widerstand angeschalten bzw. ausgeschalten werden sollen. Zum beigefügten Bild kurz eine Erklärung meiner Vorstellung:

Über den 230V Funkschalter wird ein Funkaktor angesteuert der wiederum die Primärseite des 5V Trafos an bzw. ausschalten kann. Über die Sekundärseite werden die Led-Strips bestromt sowie der Digitial Port 11 der wiederum einen "Pulldown-Widerstand" von 10kOhm vorgeschalten hat und als An bzw. Ausschalter dem Arduino einen Digitalenschalter aufzeigen soll, damit dieser weiss wann er die Led-Strips zu schalten hat. Die Led sollen dann lediglich in einem Kaltweiss Ton als Lauflicht (wie im Video) parallel zu einander loslaufen. Es sind zwei led streifen mit jeweils 165LED.

Der Arduino UNO selbst ist über ein seperates Netzteil dauerbestromt. Soweit in der Theorie...
Jetzt brauche ich allerdings eure Hilfe, denn den Skript dafür zu programmieren traue ich mir absolut nicht zu, da ich dazu leider absolut zu wenig Ahnung davon habe. Ich hoffe einer von Euch kann mir helfen und dazu einen passenden Skript schreiben und Ihn mir hier zur Verfügung stellen. Freue mich für jede Hilfreiche Antwort. Liebe Grüße

Bild zum Beitrag
Computer, Technik, programmieren, Arduino, LED, Technologie, Arduino Uno, Spiele und Gaming
Wie kann ich diese delays mit millis ersetzen?

Hallo, ich versuche mir gerade die millis Funktion beizubringen. Zurzeit verstehe ich wie man Blink without delay an der internen LED programmiert, aber ich blicke nicht ganz durch, wie ich mein ganzes Programm mit millis ersetze. Ich möchte nämlich, dass sich zwei Motoren abhängig von den Messwerten eines Ultraschallsensors drehen. Wenn die Distanz >=5 ist, sollen sie sich beide vorwärts drehen ansonsten für 3 Sekunden rückwärts (Im Code sieht es nur so komisch aus mit FORWARD und BACKWARD, weil ich die Anschlüsse bei einem Motor falsch angelötet habe). Ich würde mich sehr über eine Antwort freuen :)

#include <AFMotor.h>
#include <Servo.h>


//AF_DCMotor motor1(1);
//AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);


int trigPin = 9;
int echoPin = 10;


unsigned long currentmillis;
unsigned long previousmillis;
const long interval_1 = 1000;
const long interval_2 = 10;


void setup() {
  Serial.begin(9600); 
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);


//  motor1.setSpeed(250);
//  motor1.run(RELEASE);
//  motor2.setSpeed(250);
//  motor2.run(RELEASE);
  motor3.setSpeed(250);
  motor3.run(RELEASE);
  motor4.setSpeed(250);
  motor4.run(RELEASE);


}


void loop() {
  //Ultraschallsensor
  currentmillis = millis();
  long duration, distance;


  if (currentmillis - previousmillis >= interval_1){
  digitalWrite(trigPin,HIGH);
  //delay(1000);
     previousmillis = currentmillis;
  }
  if (currentmillis - previousmillis >= interval_2){
  digitalWrite(trigPin, LOW);
  duration=pulseIn(echoPin, HIGH);
  distance =(duration/2)/29.1;
  Serial.print(distance);
  Serial.println("CM");
  //delay (10);
     previousmillis = currentmillis;
  }


//Motoren


//vorwärts
if (distance >=5){
  motor3.run(FORWARD);
  motor4.run(BACKWARD);
}
//rückwärts
if (currentmillis - previousmillis <= interval_1){
  if (distance <=5) {
  motor3.run(BACKWARD);
  motor4.run(FORWARD);
  //delay(3000);
    previousmillis = currentmillis;
  }
}
Arduino, Arduino Uno
Warum gibt mir DHT Sensor im seriellen Monitor immer 0°C und 0% Luftfeuchtigkeit an?

Die Verdrahtung stimmt ganz sicher aber ich habe schon mehrere Programme probiert und der Sensor wird zwar erkannt, gibt aber immer nur 0 aus.

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain


// REQUIRES the following Arduino libraries:
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor


#include "DHT.h"


#define DHTPIN 9    // Digital pin connected to the DHT sensor
// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --
// Pin 15 can work but DHT must be disconnected during program upload.


// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT11   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)


// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor


// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors.  This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
DHT dht(DHTPIN, DHTTYPE);


void setup() {
  Serial.begin(9600);
  Serial.println(F("DHTxx test!"));


  dht.begin();
}


void loop() {
  // Wait a few seconds between measurements.
  delay(2000);


  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);


  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }


  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);


  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.print(f);
  Serial.print(F("°F  Heat index: "));
  Serial.print(hic);
  Serial.print(F("°C "));
  Serial.print(hif);
  Serial.println(F("°F"));
}
programmieren, Arduino Uno, Arduino Nano
Wie schaffe ich es, dass ich eine LED durch Knopfdruck blinken lassen kann und durch den Knopf die LED dann wieder ausschalten kann?

Hi, ich will mit einer LED ein Auge nachstellen. Um genauer zu werden, man soll per Knopfdruck die LED anschalten, diese soll dann 5 Sekunden an sein, dann für 1 Sekunde aus und dann wieder für 5 Sekunden an, und so weiter... Wenn man dann aber den Taster wieder betätigt, soll die LED ausgehen und die LED soll dann einfach aus bleiben.

Ich habe bereits ein Sketch geschrieben, in dem die LED blinkt und wenn man den Knopf drückt, die LED wieder ausgeht. Soweit so gut, aber ich hab leider keine Ahnung, wie ich es hinbekomme, dass die LED nicht einfach nur blinkt, sondern halt für 5s blinkt, dann für 1s und so weiter, und nicht einfach nur in einem Intervall von 1 Sekunde... Habt ihr eine Idee, was ich im Sketch falsch gemacht habe, oder eine IDee wie man das Problem lösen kann?

Sketch:

int ledState = LOW; 

uint8_t TasterValue = 0;

uint8_t BlinkValue = 0;

uint8_t status = 0;

unsigned long previousMillis = 0;     

const byte TasterPin = 12; 

const long interval = 1000;        // Blinkintervall in Millisekunden

void setup() {

 pinMode(13, OUTPUT); 

 pinMode (TasterPin, INPUT_PULLUP); 

}

void loop() {

 unsigned long currentMillis = millis();

 if (BlinkValue == HIGH) {          

  if (currentMillis - previousMillis >= interval) {

   previousMillis = currentMillis;

   if (ledState == LOW)

    ledState = HIGH;

   else

    ledState = LOW;

   digitalWrite(13, ledState);

  }

 }

 else

  digitalWrite(13, LOW);       

 

 TasterValue = digitalRead (TasterPin); 

 if (status != TasterValue) {   

  if (TasterValue) {            

   BlinkValue = !BlinkValue;    

  }

  status = TasterValue;     

  delay (200);

 }

}

Ich hoffe das dies einigermaßen übersichtlich ist und nur nochmal zum Verständnis. Mit diesem Sketch kann ich per Knopfdruck die LED aktivieren und diese blinkt dann im Intervall von 1s. Ich will aber das Gleiche, nur dass die LED nicht einfach nur im Intervall von 1s blinkt sondern dass die LED 5s an ist, dann 1s aus und dann wieder 5s an..., aber man soll das ganze per Knopfdruck komplett wieder ausschalten können.

~ArduinoGeek

Computer, Technik, Elektronik, programmieren, Arduino, LED, Sketch, Technologie, Arduino Uno, Arduino IDE

Meistgelesene Fragen zum Thema Arduino Uno