Arduino IDE – die neusten Beiträge

Pulssensor Arduino, Störungen?

Hi, ich habe gerade ein Projekt, bei der ich ein Herz nach meinem Puls blinken lassen will. Um den Sensor zu testen benutze ich einen online gestellten Code, welcher weiter unten zu finden ist. Grundsätlich funktioniert auch alles, der Puls wird angenommen und die LED blinkt in meiner Herzfrequenz, allerdings wenn mein Finger nicht drauf ist, gibt es solche Störungen, dass die Leds nur dumm flackern. Bilder vom richtigen Signal und Störungen sind beide im Anhang. Wie kann ich das am besten raus filterm, dass nix leuchtet, wenn kein finger drauf ist, aber es nach der herzfrequenz leuchtet wenn mein finger drauf ist. Klar würde es klappen wenn ich einen anderen knopf habe, welchen ich drücken muss, wenn mein finger drauf ist, dass die leds dann erst angehen und ich das flacken wie ausschalte, aber ich will das ohne knopf haben. Hat wer Vorschläge, oder besser, vielleicht eine fertigen Code? Danke im Voraus für Antworten :)

Störungen:

Puls:

Code:

// Konstanten und Variablen definieren

const int pulsePin = A0;  // Pin, an den der Puls-Sensor angeschlossen ist

const int ledPin = 13;   // Eingebaute LED-Pin des Arduino

const int threshold = 515; // Schwellenwert für den Pulswert

const int stabilityThreshold = 50; // Schwellenwert für die Stabilität des Pulswertes

int pulseValue = 0;     // Variable zur Speicherung des Pulswertes

int previousPulseValue = 0; // Variable zur Speicherung des vorherigen Pulswertes

void setup() {

 pinMode(ledPin, OUTPUT); // LED-Pin als Ausgang definieren

 Serial.begin(9600);    // Serielle Kommunikation starten

}

void loop() {

 pulseValue = analogRead(pulsePin); // Pulswert vom Sensor lesen

 Serial.println(pulseValue);     // Pulswert an den seriellen Monitor senden

 // Überprüfen, ob der Pulswert stabil ist

 if (abs(pulseValue - previousPulseValue) < stabilityThreshold) {

  // LED ein- oder ausschalten basierend auf dem Schwellenwert

  if (pulseValue > threshold) {

   digitalWrite(ledPin, HIGH); // LED einschalten

  } else {

   digitalWrite(ledPin, LOW); // LED ausschalten

  }

 } else {

  // Wenn der Pulswert nicht stabil ist, LED ausschalten

  digitalWrite(ledPin, LOW);

 }

 previousPulseValue = pulseValue; // Aktuellen Pulswert speichern

 delay(50); // Kurze Verzögerung für stabilere Werte

}

Bild zum Beitrag
Sensor, Arduino Uno, Arduino IDE

Interrupt im Programmablaufplan?

Hey, ich muss gerade für NWT einen PAP zeichnen.in dem Programm kommt auch der interrupt- Befehl vor. Ich weiß aber nicht wie genau ich ihn in den PAP einbauen soll. Der Interrupt-Befehl kommt im setup vor fällt er dann also unter start, so wie die ganzen Deklaration zum Beispiel auch? Wie würdet ihr das machen? Wohin geht der Pfeil dann nieder zurück vom unterprogramm?
meine Idee war diese hier (grobe Skizze, Befehle sind noch nicht eingetragen):

Das Programm hierzu ist übrigens das:

int warteZeit = 500;     
int versagtZeit = 0;
int tasterStatus;
int tasterPin = 2;
int Pin;
int Signal = 0;
int startZeit = 500;
int LED1 = 4;
int LED2 = 5;
int LED3 = 6;
int LED4 = 7;
int LED5 = 8;
int DurchgangsZaehler = 0;

void setup() {
 pinMode(tasterPin, INPUT_PULLUP);         
 pinMode(LED1, OUTPUT);                    
 pinMode(LED2, OUTPUT);
 pinMode(LED3, OUTPUT);
 pinMode(LED4, OUTPUT);
 pinMode(LED5, OUTPUT);
 Serial.begin(9600);                       
 attachInterrupt(digitalPinToInterrupt(tasterPin), tempo, FALLING);     
}

void loop() {
  for ( Pin = LED1; Pin < LED5; Pin++) {  
   digitalWrite(Pin, HIGH);                    
   delay(warteZeit);                         
   digitalWrite(Pin, LOW);                     
   if (Signal == 1) {                       
    for (DurchgangsZaehler = 0; DurchgangsZaehler < 3; DurchgangsZaehler++) { 
     digitalWrite(LED1, HIGH);                
     digitalWrite(LED2, HIGH);
     digitalWrite(LED3, HIGH);
     digitalWrite(LED4, HIGH);
     digitalWrite(LED5, HIGH);
     delay(200);                              
     digitalWrite(LED1, LOW);                
     digitalWrite(LED2, LOW);
     digitalWrite(LED3, LOW);
     digitalWrite(LED4, LOW);
     digitalWrite(LED5, LOW);
     delay(200);                              
    }

    Signal = 0;                              
    warteZeit=startZeit;                       
  }
 }
 for ( Pin = LED5; Pin > LED1; Pin--) {                         
 digitalWrite(Pin,HIGH);
delay(warteZeit);                                                                                      digitalWrite(Pin, LOW);                                       
    if (Signal == 1) {                                          
   for (DurchgangsZaehler = 0; DurchgangsZaehler < 3; DurchgangsZaehler++) {  
     digitalWrite(LED1, HIGH);                                   
     digitalWrite(LED2, HIGH);
     digitalWrite(LED3, HIGH);
     digitalWrite(LED4, HIGH);
     digitalWrite(LED5, HIGH);
     delay(200);                                                
     digitalWrite(LED1, LOW);                                    
     digitalWrite(LED2, LOW);
     digitalWrite(LED3, LOW);
     digitalWrite(LED4, LOW);
     digitalWrite(LED5, LOW);
     delay(200);                                                 
   }
   Signal = 0;                                                   
   warteZeit=startZeit;                                         
  }
 }
 Serial.print("Wartezeit=");                                   
 Serial.println(warteZeit);
}
void tempo() {                                                  
if (digitalRead(tasterPin) == 0 && Pin == 6) {                  
   warteZeit = warteZeit - 50;                                  
   Serial.print("Richtig gedrückt, Wartezeit beträgt nun ");   
   Serial.print(warteZeit);
   Serial.println(" Millisekunden");
 }
 else {                                                       
   Signal = 1;                                                 
}
}

Danke schonmal, falls ihr trotz dieser langen Frage antwortet

Bild zum Beitrag
Cplusplus, Arduino, NWT, Programmiersprache, C (Programmiersprache), PAP, nwt-projekt, Arduino Uno, Arduino IDE

Infrarotfernbedienung mit Arduino kopieren?

Hi,

da die Fernbedienung meiner Klimaanlage in letzter Zeit immer häufiger den Geist aufgibt und ich sie auch gerne übers Wlan ansteuern würde, bin ich gerade dabei eine Ersatzfernbedienung mit einem Arduino UNO (später rüste ich auf einen ESP32 auf) zu bauen. Hierfür habe ich mithilfe des (Arduino) IR Reveivers und der IRLib2 libary, die Rohdaten des Fernbedienungssignals zum An- und Ausschalten der Klimaanlage ausgelesen und gespeichert.

Das Signal sieht folgendermaßen aus (in verkürzter Version):

#define RAW_DATA_LEN 100

uint16_t rawData[RAW_DATA_LEN]={

6342, 3218, 390, 886, 390, 886, 390, 2158, 514, 2038, 514, 1000};

Anschließend habe ich eine Schaltung mit einer IR LED, einem P2N2222A Transistor, 2 Widerständen und meinem Arduino Uno aufgebaut um das Signal senden zu können.

Da die Klimaanlage nicht angesprungen ist, hab ich meinen IR Receiver an einen zweiten Arduino UNO angeschlossen, um zu testen ob das IR Signal von Arduino 1 empfangen wird.

Obwohl die Länge bei jedem Test 100 entspricht, weichen die empfangenen Werte sehr stark von den gesendeten ab (zb 600 statt 6000) und nur jedes zwanzigste mal kommen ungefähr die richtigen Werte an.

Also habe ich das ganze mit der Fernbedienung meines Bose Soundtouch Lautsprechers probiert (mit einer Rohdaten Länge von nur 36) und nicht nur Arduino 2 hat die richtigen Rohdaten erhalten, sondern ich war auch in der Lage, meine Bose Box an- und ausschalten zu können.

Ich habe schon viel versucht aber bis jetzt habe ich noch keine funktionierende Lösung gefunden und hoffe daher, dass einer von euch eine Lösung für mein kleines Problem hat (ich tippe auf einen Fehlerhaften Code).

Vielen Dank im Voraus,

Sneax

(Senden des Signals an meine Bose Box)

(Empfangen von IR Signalen)

Bild zum Beitrag
PC, Computer, Lampe, Elektrik, Licht, Elektrotechnik, Mikrocontroller, Spannung, Arduino, Elektrizität, LED, Mikroelektronik, Schaltung, Widerstand, Transistor, Arduino Uno, Arduino Nano, Arduino IDE, ESP32

Arduino RFID reader mit Timer?

Ich habe folgendes Problem, ich versuche eine maschine in arduino zu bauen, welche die zeit misst wo keine RFID karte auf dem reader liegt. Nun habe ich aber folgendes Problem, wenn ich die karte auflege wird der Timer schon gesartet, dieser soll aber erst gesartet werden, wenn der user die karte vom reader entpfernt. kann mir da jemand helfen.

#include <SPI.h>
#include <MFRC522.h>


#define SS_PIN D4  // SDA Pin (Slave Select)
#define RST_PIN D3 // Reset Pin


MFRC522 mfrc522(SS_PIN, RST_PIN);  // RFID-Instanz


unsigned long startTime;
bool timerActive = false;
bool cardDetected = false;


void setup() {
  Serial.begin(115200);  // Initialisiere die serielle Kommunikation
  SPI.begin();           // Initialisiere den SPI-Bus
  mfrc522.PCD_Init();   // Initialisiere den RFID-Leser


  Serial.println("RFID-Leser bereit. Halten Sie eine Karte an den Leser.");
}


void loop() {
  bool cardPresent = mfrc522.PICC_IsNewCardPresent();
  
  if (cardPresent) {
    if (mfrc522.PICC_ReadCardSerial()) {
      // Karte wird erkannt
      if (timerActive) {
        // Timer stoppen und Zeit ausgeben
        unsigned long elapsedTime = millis() - startTime;
        Serial.print("Zeit gemessen: ");
        Serial.print(elapsedTime);
        Serial.println(" ms");
        timerActive = false;  // Timer zurücksetzen
      }
      cardDetected = true; // Karte wurde erkannt
      mfrc522.PICC_HaltA();  // Halt das Leseverfahren
      mfrc522.PCD_StopCrypto1();
    }
  } else {
    // Wenn keine Karte mehr vorhanden ist
    if (cardDetected && !timerActive) {
      // Timer starten, wenn der Timer nicht aktiv ist
      startTime = millis();
      timerActive = true;
      Serial.println("Timer gestartet.");
    }
    cardDetected = false; // Karte wurde entfernt
  }
}


Computer, Elektrik, Arduino, Elektrizität, Schaltung, Arduino Uno, ESP8266, Arduino IDE

IR Sensor mit Arduino Nano?

Hi, ich hab mir einen Arduino nano zugelegt um damit ein kleines Auto mit paar Sensoren und Aktoren zu betreiben.

Ich hab mir zur Hinderniserkennung IR Sensoren gekauft (Link unten) diese funktionen mit folgendem Code auch so wie sie sollen mit meinem Arduino Uno R3. Hierfür habe ich die einzelnen Sensoren direkt an 3,3V, GND und dem Arduino pin angeschlossen.

int sensorPin = 2;

int sensorValue = 0;

void setup() {

 Serial.begin(9600);

 pinMode(sensorPin, INPUT);

}

void loop() {

 sensorValue = digitalRead(sensorPin);

 if (sensorValue == LOW) {

  Serial.println("Hindernis erkannt!");

 } else {

  Serial.println("Kein Hindernis.");

 }

 delay(500);

}

Wenn ich nun den Nano abänder anschließe funktioniert der Sensor nicht mehr.

Ich benutze die Arduino IDE und habe als ich den Nano angeschlossen nur den USB Anschluss geändert (muss ich hier villt noch etwas anderes ändern?).

Weiß jemand wo das Problem liegen könnte?

Hinderniserkennung IR Sensoren:

https://www.ebay.de/itm/174942182964?_nkw=4+Kanal+IR+Infrarot+Tracking+Sensor+Modul+-+Hindernisserkennung+f%C3%BCr+Smart+Car&itmmeta=01J79NGC6KKJ439FSTJ9GG99QT&hash=item28bb5dde34:g:5TkAAOSwbLRjD1yt&itmprp=enc%3AAQAJAAABMHoV3kP08IDx%2BKZ9MfhVJKmC%2BPVC644mrcLgtwu5qPGjT1WwbPKL1n9u5px2XO2JuR83QNbwP1BuCqzHOZQzE%2BpO%2FwcR8C3YkZyWkMqbCX9WOTPRueH5JMxyq%2FqCbJqgj%2BMP%2FVdpjXVrh3tzWdZ7UsNYUIrsBNzkkdXK7lpfXju9zNJJJZg7%2FbvYnoASrwTAfg%2FwWH7cGK4pPb%2BVN6wLOajIwAXGuxxM1flqu30XY%2F1584jTCKZ--05Lu471fI%2FX%2FYcnjaIuVY%2Bhi9eLqUAd2L%2FiwKwQwz8HfLosxRffuNm5wUKa0HLwKc%2Bh%2Fk6xeeKJ0DX3b1ar%2BOYa%2BuCYAhZ28efA3oeQqgIaRDpzHeN%2Fy9ehTJDgysBu4kqMO4sOd9QwgWbI8hpnmaKgiqZ%2B8VhbD0k%3D%7Ctkp%3ABFBMuMPBtbpk&edge=1

Elektrotechnik, Mikrocontroller, Arduino, Schaltung, Sensor, Arduino Uno, Arduino IDE

Warum funktioniert mein Arduino Code nicht?

Ich möchte mit einem Sensor einen Sound abspielen und wenn der Sensor ausgeht, soll ein Verabschiedungssound gespielt werden.

Ich benutze Arduino Nano und DfPlayer Mini.

Es wird kein Sound abgespielt.

Danke im Voraus.

Der Code lautet:

#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>

// DFPlayer Mini setup
SoftwareSerial mySoftwareSerial(2, 3); // RX, TX for DFPlayer Mini
DFRobotDFPlayerMini dfPlayer;

const int seatMatPin = 7; // Pin connected to seat occupancy mat
bool wasSeated = false;

void setup()
{
  // Start serial communication for debugging
  Serial.begin(9600); // Start serial communication at 9600 baud rate

  // Initialize serial for DFPlayer Mini
  mySoftwareSerial.begin(9600);

  // Try to start DFPlayer Mini
  if (!dfPlayer.begin(mySoftwareSerial)) {
    Serial.println("DFPlayer Mini konnte nicht gestartet werden."); // Print error message
    while (true); // Stop execution here if DFPlayer Mini fails to start
  }

  Serial.println("DFPlayer Mini bereit."); // Print success message

  // Initialize seat mat pin
  pinMode(seatMatPin, INPUT_PULLUP); // Assuming mat signal is active LOW
}

void loop()
{
  // Read seat mat state
  bool isSeated = digitalRead(seatMatPin) == LOW; // LOW means seat is occupied

  if (isSeated && !wasSeated) {
    // Seat was just occupied
    Serial.println("Sitz wurde besetzt. Begrüßungsmelodie abspielen."); // Print message
    dfPlayer.play(1); // Play greeting sound
    wasSeated = true;
  }
  else if (!isSeated && wasSeated) {
    // Seat was just vacated
    Serial.println("Sitz wurde verlassen. Verabschiedungsmelodie abspielen."); // Print message
    dfPlayer.play(2); // Play farewell sound
    wasSeated = false;
  }

  delay(100); // Small delay for stability
}
Arduino, Code, Programmiersprache, Arduino Nano, Arduino IDE

Arduino Code funktioniert nicht?

IRremote und JoyStick funktionieren nicht

#include <SPI.h> // Bibliothek für SPI-Kommunikation

#include <Mirf.h> // Bibliothek für nRF24L01

#include <nRF24L01.h> // Treiber für nRF24L01

#include <MirfHardwareSpiDriver.h> // Hardware-SPI-Treiber für Mirf

#include <IRremote.h> // Bibliothek für IR-Kommunikation

// Pin-Definitionen

int receiver = 4; // Pin für den IR-Empfänger

const int SW = 2; // Pin für den Schalter

const int X = A0; // Analog-Pin für X-Achse

const int Y = A1; // Analog-Pin für Y-Achse

// Initialisierung des IR-Empfängers

IRrecv irrecv(receiver);

IRsend results;

uint32_t last_decodedRawData = 0; // Variable zum Speichern des letzten IR-Codes

// Funktion zur Verarbeitung des empfangenen IR-Codes

void translateIR() {

 if (irrecv.decodedIRData.flags) {

  // Wenn ein Wiederholungscode empfangen wird, den letzten empfangenen Code verwenden

  irrecv.decodedIRData.decodedRawData = last_decodedRawData;

 } else {

  // Den empfangenen Code im seriellen Monitor ausgeben

  Serial.print("Empfangener IR-Code: 0x");

  Serial.println(irrecv.decodedIRData.decodedRawData, HEX);

 }

}

// Setup-Funktion, die einmal beim Starten des Programms ausgeführt wird

void setup() {

 Serial.begin(9600); // Startet die serielle Kommunikation mit 9600 Baud

 irrecv.enableIRIn(); // Aktiviert den IR-Empfänger

 pinMode(SW, INPUT); // Setzt den Schalter-Pin als Eingang

 digitalWrite(SW, HIGH); // Aktiviert den Pull-up-Widerstand für den Schalter

 Mirf.cePin = 9; // Setzt den Chip Enable (CE) Pin für den nRF24L01

 Mirf.csnPin = 10; // Setzt den Chip Select Not (CSN) Pin für den nRF24L01

 Mirf.spi = &MirfHardwareSpi; // Setzt den SPI-Treiber für Mirf

 Mirf.init(); // Initialisiert den nRF24L01

 Mirf.setRADDR((byte *)"Sen01"); // Setzt die Adresse des Senders

 Mirf.payload = sizeof(unsigned int); // Setzt die Payload-Größe auf die Größe eines unsigned int

 Mirf.channel = 3; // Setzt den Kommunikationskanal auf 3

 Mirf.config(); // Konfiguriert den nRF24L01

}

unsigned int adata = 0; // Variable zum Speichern der zu sendenden Daten

// Hauptschleife, die kontinuierlich ausgeführt wird

void loop() {

 // Überprüfen, ob ein IR-Signal empfangen wurde

 if (irrecv.decode()) {

  translateIR(); // Verarbeitung des empfangenen IR-Codes

  irrecv.resume(); // Bereit zum Empfang des nächsten IR-Codes

 }

 // Lesen des Schalter- und Analogwerte

 int swValue = digitalRead(SW); // Lesen des Schalterzustands

 int xValue = analogRead(X); // Lesen des X-Achsen-Werts

 int yValue = analogRead(Y); // Lesen des Y-Achsen-Werts

 // Überprüfen der empfangenen IR-Codes und Setzen von adata entsprechend

 if (last_decodedRawData == 0xAD52FF00) {

  adata = 12006;

 } else if (last_decodedRawData == 0xBF40FF00) {

  adata = 12005;

 } else if (last_decodedRawData == 0xBC43FF00) {

  adata = 12004;

 } else if (last_decodedRawData == 0xBB44FF00) {

  adata = 12003;

 }

 // Überprüfen des Schalterwerts und Setzen von adata

 if (swValue == 0) {

  adata = 2103;

 }

 // Überprüfen der Analogwerte und Setzen von adata

 if (yValue < 1024 && yValue > 6 && xValue > 150 && xValue < 800) {

  adata = 213;

 } else if (yValue < 512 && yValue > -1 && xValue > 200 && xValue < 700) {

  adata = 312;

 } else if (xValue < 509 && xValue > -1 && yValue > 200 && yValue < 750) {

  adata = 231;

 } else if (xValue < 1024 && xValue > 515 && yValue > 450 && yValue < 750) {

  adata = 321;

 } else if (xValue < 514 && xValue > 510 && yValue < 511 && yValue > 507) {

  adata = 123;

 }

 // Senden der Daten über Mirf, wenn adata gesetzt wurde

 if (adata != 0) {

  byte data[Mirf.payload]; // Array zum Speichern der zu sendenden Daten

  data[0] = adata & 0xFF; // Niedriges Byte von adata

  data[1] = adata >> 8; // Hohes Byte von adata

  Mirf.setTADDR((byte *)"Rec01"); // Setzt die Adresse des Empfängers

  Mirf.send(data); // Sendet die Daten

  while (Mirf.isSending()) {} // Warten, bis das Senden abgeschlossen ist

  delay(20); // Kurze Pause, um das Senden zu beenden

  adata = 0; // Zurücksetzen von adata nach dem Senden

 }

}

Arduino, Code, Programmiersprache, Arduino Uno, Arduino IDE

ESP32 Code gut?

Hi, ich würde gerne fragen ob dieser code gut ist weil ich kenne mich nicht aus und da kommt immer dieser fehlercode:
'sendDiscordNotification' was not declared in this scope

#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>


const char* ssid = "WLanSSID";
const char* password = "Password";


const char* webhook_url = "https://discord.com/api/webhooks/MyWebhook";



const int doorbellPin = 13;


bool doorbellState = LOW;


void setup() {
  Serial.begin(115200);
  

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Verbindung zum WLAN wird hergestellt...");
  }
  Serial.println("WLAN verbunden!");
  

  pinMode(doorbellPin, INPUT);
}


void loop() {
  doorbellState = digitalRead(doorbellPin);



  if (doorbellState == HIGH) {
    sendDiscordNotification();
    delay(5000);
  }


  delay(100);
}


void sendDiscordNotification() {
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;


    http.begin(webhook_url);


    http.addHeader("Content-Type", "application/json");



    String payload = "{\"content\": \"Es hat geklingelt!\"}";


    int httpResponseCode = http.POST(payload);


    if (httpResponseCode > 0) {
      String response = http.getString();
      Serial.println(httpResponseCode);
      Serial.println(response);
    } else {
      Serial.print("Fehler bei der HTTP Anfrage: ");
      Serial.println(httpResponseCode);
    }



    http.end();
  } else {
    Serial.println("WiFi Verbindung verloren");
  }
}
Arduino, Code, Programmiersprache, C (Programmiersprache), Arduino IDE

Fehler bei Arduino-Programm (Arduino Uno)?

Mein Programm sollte eigentlich so funktionieren, dass beim drücken der einen Taste auf einer Fernbedienung der motorPin auf high gesetzt wird und der Motor sich eben dreht und bei einer anderen Taste der wieder aufhört. Die Tasten erkannt und sonst funktioniert auch alles, bis ich die Taste zum Einschalten vom Pin drücke. Der Pin schaltet sich auch an, aber danach wird im Serial Monitor nur noch

IR code:0x0
 other button   

angezeigt, ohne, dass überhaupt irgendwas gedrückt wird und der Pin lässt sich auch nicht mehr ausschalten. Wie fixe ich das?

das ist der Code:



#include "IRremote.h"

int receiver = 11; 
int motorPin = 6; 

IRrecv irrecv(receiver);   
uint32_t last_decodedRawData = 0;

void translateIR() 
{  
  if (irrecv.decodedIRData.flags)
  {
    irrecv.decodedIRData.decodedRawData = last_decodedRawData;
    Serial.println("REPEAT!");
  } else
  {
    Serial.print("IR code:0x");
    Serial.println(irrecv.decodedIRData.decodedRawData, HEX);
  }
 
  switch (irrecv.decodedIRData.decodedRawData)
  {
    case 0xF807FF00: digitalWrite(6, HIGH);    break;
    case 0xF609FF00: digitalWrite(6, LOW);    break;

    default:
      Serial.println(" other button   ");
  }
  last_decodedRawData = irrecv.decodedIRData.decodedRawData;
  delay(500);
}


void setup() 
{
  Serial.begin(9600);
  Serial.println("IR Receiver Button Decode");
  irrecv.enableIRIn();
  pinMode(6, OUTPUT); 


}


void loop()  
{
  if (irrecv.decode()) 
  {
    translateIR();
    irrecv.resume();
  }
}
Arduino, C (Programmiersprache), Arduino Uno, Arduino IDE

Programmierung mit Arduino, Fehler?

Ich soll für die Schule einen Heißen Draht programmieren mit Arduino, dass bei der 1. und 2. Berührung ein grünes Licht an geht, und bei der Berührung ein Ton ertönt, bei der 3. Berührung ein gelbes Licht angeht und bei der Berührung ein Ton ertönt, bei der 4. Berührung ein Rotes Licht angeht und ein Ton ertönt bei der Berührung und ab der 5. Berührung ein das rote Licht an ist und der Ton durchgehend ertönt. Zudem soll ein Reset-Taster verbaut sein, der egal an welcher Stelle man ist, wieder das Spiel von Neu startet.

Das hätte ich bereits, nur leider klappt es noch nicht, kann mir jemand halfen

int LEDgr = 2;
int LEDge = 3;
int LEDro = 4; 
int Draht = 5;
int ton = 6;  
nt Reset = 7;
int x = 0;   
boolean Start1 = LOW; 
boolean Start2 = LOW;
void setup ()
{
     pinMode (LEDgr, OUTPUT);   
     pinMode (LEDge, OUTPUT);
     pinMode (LEDro, OUTPUT);
     pinMode (ton, OUTPUT);    
     pinMode (Draht, INPUT);  
     pinMode (Reset, INPUT);  
}
void loop() 
{
   if (digitalRead(Draht) == LOW)  
     {
       Start1 == HIGH; 
       }
   if (digitalRead(Draht)==LOW && (Start2 == LOW) && (Start1 ==HIGH)) 
     {
       x = x +1; 
       }
   if (digitalRead(Draht)==LOW&&(Start1 == HIGH))
     {
       Start2 == HIGH; 
     }
   if (digitalRead(Draht) == HIGH) 
     {
       Start2 == LOW; 
       }
   Start1 == LOW;   
   if (x<=2)  
     {
        digitalRead(LEDgr, HIGH) ;
digitalRead(Ton, HIGH);
       }
       else {
if (x == 3)    
      {
          digitalRead(LEDgr, LOW);
          digitalRead(LEDge,HIGH);
digitalRead(Ton, HIGH);
          
         }
       else {
      if (x == 4)     
     {
        digitalRead(LEDge, LOW);
        digitalRead(LEDro,HIGH); digitalRead(Ton, HIGH);
       }
       else {
     if (x >= 5)     
     {
        digitalRead(LEDro,HIGH);
        digitalRead(ton,HIGH); 
               }
             }
           }
         }
    if (digitalRead(Reset) == LOW)  
     {
       digitalWrite (LEDgr, LOW);
       digitalWrite (LEDge, LOW);
       digitalWrite (LEDro, LOW);
       digitalWrite (ton,LOW);
       x = 0; 
       } 
}
Arduino, Code, Programmiersprache, Arduino Uno, Arduino IDE

Warum wird Mein Datum auf dem LCD-Display nicht angezeigt?

Habe versucht das aktuelle datum auf einem LCD-Display anzeigen zu lassen.

Dazu wurde verwendet:
- Arduino Uno R3
- DS1307 Modul V03
- LCD1602 Modul
- 10k Poti
- Paar kabel
Mein Code:
#include <Wire.h>

#include <RTClib.h>

#include <LiquidCrystal.h>

RTC_DS3231 rtc;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // RS, E, D4, D5, D6, D7

void setup() {

  Serial.begin(9600);

  Wire.begin();

  lcd.begin(16, 2); // Initialisiere das LCD-Display

  if (!rtc.begin()) {

    Serial.println("RTC konnte nicht gefunden werden!");

    while (1);

  }

  if (rtc.lostPower()) {

    Serial.println("RTC hat die Zeit verloren, bitte die Uhrzeit neu einstellen!");

  }

  rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Uhrzeit beim Hochladen des Sketches einstellen

}

void loop() {

  DateTime now = rtc.now();

  // Lösche das Display und setze den Cursor an den Anfang

  lcd.clear();

  lcd.setCursor(0, 0);

  // Datum formatieren: YYYY/DD/MM

  lcd.print(now.year(), DEC);

  lcd.print('/');

  lcd.print(now.day(), DEC); // Tag vor Monat

  lcd.print('/');

  lcd.print(now.month(), DEC); // Monat vor Tag

  // Serielle Ausgabe für Überprüfungszwecke

  Serial.print(now.year(), DEC);

  Serial.print('/');

  Serial.print(now.day(), DEC); // Tag vor Monat

  Serial.print('/');

  Serial.print(now.month(), DEC); // Monat vor Tag

  Serial.println();

  delay(5000);

}
Das Poti ist dafür da um den Kontrast des Lcd modules richtig einzustellen. Mein Problem ist nun das ich auf dem Seriellen Monitor von dem Arduino Program das Datum korrekt angezeigt bekomme nur auf dem LCD Display nicht. Ich habe die komplette Verkabelung überprüft und die 5 Sekunden Delay Zeit habe ich so "hoch" gestellt weil ich gelesen habe das dass ei problem sein kann wenn der Arduino nicht genügend Zeit hat um das Programm zu verarbeiten. Auf dem LCD-Display wird nur ein Blauer Hintergrund angezeigt. Das Lcd display funktioniert aber in anderen Projekten einwandfrei (Habe das Hello World Programm von Lektion 22 nochmals gerade eben getestet und es hat funktioniert ohne mengel). Ich habe das DS1307 Modul V03 mit plus und minus angeschlossen und die anderen Beiden Pins (SDA und SCL) auch korrekt auf die beiden pins des arduinos angeschlossen (SDA und SCL). Hier noch ein schaltbild wie ich das LCD Display und das Poti angeschlossen habe:

Bitte um Hilfe weil ich ein wenig verzweifle😅.
Danke im vorraus!

Bild zum Beitrag
PC, Computer, Elektrik, Arduino, LCD-Display, Arduino Uno, Arduino IDE

Arduino nano exit Status 1?

Guten nachmittag

Ich habe mir einen Arduino nano gekauft und wollte ihn ausprobieren, jedoch passiert immer wenn ich es hochladen will das:

Der Sketch verwendet 1506 Bytes (4%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.

Globale Variablen verwenden 196 Bytes (9%) des dynamischen Speichers, 1852 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00

avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00

avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00

avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00

avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00

avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00

avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00

avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00

avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00

avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

Fehlgeschlagenes Hochladen: Hochladefehler: exit status 1

Weiter, wird mir auch nicht angezeigt bei welchem port er angeschlossen ist (ich musste also try and error versuchen)

Was ist das Problem und wie kann ich das am besten beheben?

Danke im vorraus für die Antworten!

Ps:

Das ist das Program:

void setup() {

 // put your setup code here, to run once:

}

void loop() {

 // put your main code here, to run repeatedly:

Serial.print("Hello World");

delay(100);

}

Also sehr einfach, einfach um ihn zu testen

Arduino, Programmiersprache, Arduino Uno, Arduino Nano, Arduino IDE

Arduino und ESP8266 Fehler?

Hi, ich habe den Wifichip an den Arduino angeschlossen, wie hier:

Ich habe die Bibliotheken importiert und als Board auch bei Tools > Board > ESP8266 > Arduino gewählt. Wenn ich aber diesen Code hochlade :

#include <Adafruit_NeoPixel.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>


#define NUM_STRIPS 5
#define LED_PER_STRIP 60


const char* ssid = "#######";
const char* password = "########";


Adafruit_NeoPixel strips[NUM_STRIPS];
ESP8266WebServer server(80);


void setup() {
  Serial.begin(115200);


  // WLAN-Verbindung herstellen
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Verbindung zum WLAN herstellen...");
  }
  Serial.println("Verbunden mit WLAN");


  // Lichtstreifen initialisieren
  int stripPins[NUM_STRIPS] = {2, 3, 4, 5, 6}; // An Ihre Verkabelung anpassen



  for (int i = 0; i < NUM_STRIPS; i++) {
    strips[i] = Adafruit_NeoPixel(LED_PER_STRIP, stripPins[i]);
    strips[i].begin();
    strips[i].show();
  }


  // Webserver-Routen festlegen
  server.on("/", HTTP_GET, handleRoot);
  server.on("/led/on", HTTP_GET, handleLedOn);
  server.on("/led/off", HTTP_GET, handleLedOff);
  server.on("/led/color", HTTP_GET, handleLedColor);
  server.on("/led/brightness", HTTP_GET, handleLedBrightness);


  server.begin();
  Serial.println("Webserver gestartet");
}


void loop() {
  server.handleClient();
}


void handleRoot() {
  server.send(200, "text/html", "Willkommen bei der Lichtstreifen-Steuerung");
}


void handleLedOn() {
  int stripIndex = server.arg("strip").toInt();
  if (stripIndex >= 0 && stripIndex < NUM_STRIPS) {
    strips[stripIndex].fill(strips[stripIndex].Color(255, 255, 255));
    strips[stripIndex].show();
    server.send(200, "text/plain", "Lichtstreifen eingeschaltet");
  } else {
    server.send(400, "text/plain", "Ungültiger Streifenindex");
  }
}


void handleLedOff() {
  int stripIndex = server.arg("strip").toInt();
  if (stripIndex >= 0 && stripIndex < NUM_STRIPS) {
    strips[stripIndex].clear();
    strips[stripIndex].show();
    server.send(200, "text/plain", "Lichtstreifen ausgeschaltet");
  } else {
    server.send(400, "text/plain", "Ungültiger Streifenindex");
  }
}


void handleLedColor() {
  int stripIndex = server.arg("strip").toInt();
  int r = server.arg("R").toInt();
  int g = server.arg("G").toInt();
  int b = server.arg("B").toInt();


  if (stripIndex >= 0 && stripIndex < NUM_STRIPS) {
    strips[stripIndex].fill(strips[stripIndex].Color(r, g, b));
    strips[stripIndex].show();
    server.send(200, "text/plain", "Lichtfarbe aktualisiert");
  } else {
    server.send(400, "text/plain", "Ungültiger Streifenindex");
  }
}


void handleLedBrightness() {
  int stripIndex = server.arg("strip").toInt();
  int brightness = server.arg("brightness").toInt();


  if (stripIndex >= 0 && stripIndex < NUM_STRIPS) {
    strips[stripIndex].setBrightness(brightness);
    strips[stripIndex].show();
    server.send(200, "text/plain", "Helligkeit aktualisiert");
  } else {
    server.send(400, "text/plain", "Ungültiger Streifenindex");
  }
  }

Kommt immer diese Fehlermeldung:

. Variables and constants in RAM (global, static), used 29040 / 80192 bytes (36%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ DATA     1504     initialized variables
╠══ RODATA   1320     constants       
╚══ BSS      26216    zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 60527 / 65536 bytes (92%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ ICACHE   32768    reserved space for flash instruction cache
╚══ IRAM     27759    code in IRAM    
. Code in flash (default, ICACHE_FLASH_ATTR), used 271296 / 1048576 bytes (25%)
║   SEGMENT  BYTES    DESCRIPTION
╚══ IROM     271296   code in flash   
esptool.py v3.0
Serial port COM3
Connecting........_____....._____....._____....._____....._____....._____....._____


A fatal esptool.py error occurred: Failed to connect to ESP8266: Timed out waiting for packet header

Ich habe es auch schon versucht mit den Anschluss Flash in GND beim Arduino, hilf aber nicht

Weiß jemand was ich tun kann?

Vg Tmm

Bild zum Beitrag
Fehler, programmieren, Arduino, Script, Platine, ESP8266, Arduino IDE

Arduino Thermistor --- analog PIN zu Temperatur?

Hallo,

Ich arbeite momentan daran mit dem Arduino einen Thermometer zu bauen. Jedoch bekomme ich es nicht her, die richtigen Werte herauszubringen. Ich verwende einen Spannungsteiler. Auf der einen Seite ein Thermistor - ist verbunden mit A0 und 3.3V und dann ein 1000 Ohm Widerstand mit Verbindungen zu A0 und GND. Ich habe einen Arduino UNO R3 und ein MF52D3950 Thermistor. Was stimmt mit meinem Code nicht? Der Widerstand des Thermistors (im Code R2) sollte ca. 9200 Ohm betragen, ist aber immer zwischen 118 und 120. An was liegt das? Ich bin da schon 5 Stunden dran. Also BITTE helft mir.

Vielen Dank im Voraus!

LG

//www.elegoo.com
//2016.12.9
#include <math.h>
#include <LiquidCrystal.h>
//        BS E D4 D5 D6 D7
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void setup() {
 Serial.begin(9600);
}
// This is OK
int analogPin= 0;
int raw= 0;
int Vin= 3.3; //volts input
float Vout= 0; // unknown voltage, we have to measure
float R2= 0; // Unknown resistance, we have to measure
float T1 = 26 + 273.15; //reference temperature
float R1 = 9040; //reference resistance
float T2 = 0; //searched temperature
float B = 3950; //B value resistor
float R_REF = 1000; //reference resistor Spannungsteiler Wert
void loop() {
 raw = analogRead(analogPin); //liest BIT-Wert für Spannung aus, welcher zum feststellen der Temperatur nötig ist
 Vout= (raw * 5)/(1024.0);
 R2 = R_REF / ((Vin / Vout) - 1);
 T2 = (B*T1*(-1))/(T1*log(R1/R2)-B)-273.15; //berechnet Temperatur
 
 Serial.print("raw:");
 Serial.println(raw);
 Serial.print("Vout:");
 Serial.println(Vout);
 Serial.print("R2:");
 Serial.println(R2);
 Serial.print("T2:");
 Serial.println(T2);
}
Elektrik, Spannung, Arduino, Elektrizität, LED, Physik, Schaltung, Widerstand, Arduino IDE

Meistgelesene Beiträge zum Thema Arduino IDE