Arduino Daten an HTML-Seite?

Ich habe gerade ein Projekt, indem ich versuche Daten vom Arduino auf eine HTML-Seite zu übertragen. Dabei benutze ich node.js.

Jedoch bin ich noch relativ neu in dem Thema und kenne mich nicht so gut mit Servern und node aus.

Im Moment erhalte ich ständig die Fehlermeldung: Server is not a consructor (const io = new Server('COM3'))

Quelltext aus app.js:

var http = require("http");
var fs = require("fs");
var index = fs.readFileSync("index.html");


var SerialPort = require("serialport");
const parsers = SerialPort.parsers;


const parser = new parsers.Readline({
  delimiter: "\r\n",
});


var port = new SerialPort("COM3", {
  baudRate: 9600,
  dataBits: 8,
  parity: "none",
  stopBits: 1,
  flowControl: false,
});


port.pipe(parser);


var app = http.createServer(function (req, res) {
  res.writeHead(200, {"Content-Type": "text/html"});
  res.end(index);
});


const Server = require('socket.io');
const io = new Server('COM3');


io.on("connection", function (socket) {
  console.log("Node is listening to port");
});


parser.on("data", function (data) {
  console.log("Received data from port: " + data);
  io.emit("data", data);
});

app.listen(3000);

Quelltext aus index.html:

<!doctype html>
<html>
    <head>
        <title>Test</title>


        <script src="https://cdn.socket.io/4.7.5/socket.io.min.js"></script>


    </head>
    <body>


        <h1> Communicating between an arduino and a html website</h1>


        <div id='sample'></div>


        <script>
            
            var socket = io();
            socket.on('data',function(data){
                console.log(data);
                document.getElementById('sample').innerHTML = data;
            });
            
        </script>
        
    </body>
</html>
Computer, HTML, IT, JavaScript, Anwendungsentwicklung, Arduino, Code, Programmiersprache, Webentwicklung, node.js, Visual Studio Code
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 zu Frage
PC, Computer, Elektrik, Arduino, LCD-Display, Arduino Uno, Arduino IDE
Kann mir jemand erklären warum diese Arduino Schaltung nicht richtig funktioniert? bzw. die Taster?

Ich habe btw Natürlich die Kabel richtig verbunden falls das jemand fragt weil ich den arduino ausgelassen habe

Code:

const int Taster1 = 1;  // Pin für den ersten Taster
const int Taster2 = 2;  // Pin für den zweiten Taster
const int Taster3 = 3;  // Pin für den dritten Taster

const int helligkeitsreglerPin = A5;  // Pin für den Helligkeitsregler
const int numLEDs = 8;
const int AmpelLEDs = 2;

int LEDs1[numLEDs] = {6, 7, 8, 9, 10, 11, 12, 13};  // Pins für die LEDs
int LEDs2[numLEDs] = {12, 10, 9, 7, 13, 11, 8, 6};  // Another pattern
int LEDrot[AmpelLEDs] = {10, 11};
int LEDgelb[AmpelLEDs] = {9, 8};
int LEDgruen[AmpelLEDs] = {7, 6};

void setup() {
  for (int i = 0; i < numLEDs; i++) {
    pinMode(LEDs1[i], OUTPUT);
    pinMode(LEDs2[i], OUTPUT);
  }

  gleichzeitigBlinken(LEDs1, 12, 13);
  delay(200);  // Warte 2 Sekunden
  gleichzeitigBlinken(LEDs1, 10, 11);
  delay(200);  // Warte 2 Sekunden
  gleichzeitigBlinken(LEDs1, 9, 8);
  delay(200);  // Warte 2 Sekunden
  gleichzeitigBlinken(LEDs1, 7, 6);
  delay(200);  // Warte 2 Sekunden
}

void loop() {
  if (digitalRead(Taster1) == HIGH) {
    Variation1(LEDs1);
    delay(1000);  // Entprellzeit
  }

  if (digitalRead(Taster2) == HIGH) {
    Variation2(LEDs2);
    delay(1000);  // Entprellzeit
  }

  if (digitalRead(Taster3) == HIGH) {
    ampelProgram(LEDrot, LEDgelb, LEDgruen);
    delay(1000);  // Entprellzeit
  }

  // Weitere Bedingungen für andere Programme hinzufügen, wenn nötig
}
void Variation1(int LEDs[]) {
  int brightness = analogRead(helligkeitsreglerPin) / 4;  // 0-1023 to 0-255
  for (int i = 0; i < numLEDs; i++) {
    analogWrite(LEDs[i], brightness);
    delay(200);                 // Beispiel: LED für 0,5 Sekunden einschalten
    analogWrite(LEDs[i], LOW);  // LED ausschalten
  }
}

void Variation2(int LEDs[]) {
  int brightness = analogRead(helligkeitsreglerPin) / 4;  // 0-1023 to 0-255
  for (int i = 0; i < numLEDs; i++) {
    analogWrite(LEDs[i], brightness);
    delay(200);                 // Beispiel: LED für 0,2 Sekunden einschalten
    analogWrite(LEDs[i], LOW);  // LED ausschalten
  }
}
void ampelProgram(int redLEDs[], int yellowLEDs[], int greenLEDs[]) {
  // Rote LEDs einschalten
  turnOnLEDs(redLEDs, AmpelLEDs);
  delay(200);  // Warte 2 Sekunden

  // Rote LEDs ausschalten
  turnOffLEDs(redLEDs, AmpelLEDs);

  // Gelbe LEDs einschalten
  turnOnLEDs(yellowLEDs, AmpelLEDs);
  delay(200);  // Warte 1 Sekunde

  // Gelbe LEDs ausschalten
  turnOffLEDs(yellowLEDs, AmpelLEDs);

  // Grüne LEDs einschalten
  turnOnLEDs(greenLEDs, AmpelLEDs);
  delay(200);  // Warte 2 Sekunden

  // Grüne LEDs ausschalten
  turnOffLEDs(greenLEDs, AmpelLEDs);
}

void turnOnLEDs(int leds[], int num) {
  for (int i = 0; i < num; i++) {
    analogWrite(leds[i], 255);  // Vollhelligkeit für die LEDs
  }
}

void turnOffLEDs(int leds[], int num) {
  for (int i = 0; i < num; i++) {
    analogWrite(leds[i], 0);  // LEDs ausschalten
  }
}

void gleichzeitigBlinken(int LEDs[], int pin1, int pin2) {
  for (int i = 0; i < numLEDs; i++) {
    if (i == pin1 || i == pin2) {
      digitalWrite(LEDs[i], HIGH);
    }
  }

  delay(200);  // Beispiel: LEDs für 1 Sekunde einschalten
  for (int i = 0; i < numLEDs; i++) {
    digitalWrite(LEDs[i], LOW);
  }
}
Bild zu Frage
Arduino, Code, Arduino Uno
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
Messverstärker Drehmomentmesswelle?

Liebe Community, hier etwas für Elektroniker und Bastler:

Es geht um eine Drehmomentmesswelle für die Messung von Drehmomenten bis 2000Nm. Die Versorgungsspannung beträgt 12VDC. Beim Messignal handelt es sich um einen Spannungsausgang von 0 bis +/- 10V, je nachdem, ob das Drehmoment gegen den Uhrzeigersinn oder im Uhrzeigersinn anliegt.

Folgendes Problem: Die Steuerung, mit der das Messignal ausgewertet werden soll, ist nur in der Lage positive Spannungen gegen GND zu messen. D.h. also, ich könnte nur Drehmomente in die eine Richtung auswerten. Die Sache ist nun, dass der Messverstärker der Messwelle einen vom Versorungs-GND galvanisch getrennten Messignal-GND besitzt, auf den sich die +/- 10V beziehen.

Die Frage ist nun, ob ich diesen Mess-GND einfach um +10V anheben könnte (separates Netzteil oder +12V vom Versorgungsnetzteil), sodass ich praktisch Ausgangssignale von 0V (Vollausschlag in Linksrichtung), 10V (kein Moment) und 20V (Vollausschlag in Rechtsrichtung) erhalte.

Wäre das möglich oder eher nicht oder könnte es gar eine Zerstörung zur Folge haben? es handelt sich bei dem Messverstärker ja praktisch um eine von der Versorgung unabhängige Spannungsquelle...

Wenn jemand Erfahrung in der Messtechnik hat wäre das super, vielen Dank!

Computer, Studium, Schule, Elektronik, Strom, Elektrik, Elektrotechnik, Spannung, Arduino, Elektriker, Elektrizität, Maschinenbau, Physik, Schaltung, Widerstand

Meistgelesene Fragen zum Thema Arduino