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 zum Beitrag
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
Mein Arduino Programm für einen Tresor funktioniert nicht?

Ich muss für die Schule einen Tresor mit einem 3x4Keypad , einem Servo und einem Lcd Display programmieren. Dafür habe ich einen Arduino UNO. Das Programm funktioniert aber nicht so wie ich es will.

Wenn ich eine Taste drücke, die nicht # oder * ist soll sie auf dem Display angezeigt werden und auf der Variable inputPasswort gespeichert werden. Diese sollen aber nicht immer in der ersten Spalte stehen, sondern sollen nebeneinander in einer Zeile angezeigt werden. Wenn ich # drücke soll der Arduino prüfen ob das eingegebene Passwort richtig ist. Wenn das der Fall ist, soll sich der Servo öffnen und das Display "Passwort richtig" anzeigen. Wenn nicht soll der Servo geschlossen bleiben und das Display soll "Passwort falsch" anzeigen. Wenn * gedrückt wird soll das Programm alle bisher eingegebenen Zahlen von der Variable inputPasswort löschen.

Das Display zeigt die Zahlen aber nur kurz und immer an verschiedenen Stellen an. Der Arduino erkennt auch nicht wenn das Passwort richtig ist. Kann mir bitte jemand helfen?

So sieht mein Programm bisher aus:

#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <Servo.h>
#include <Keypad.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int cursorPosition = 0; // Variable für die Position des Cursors
Servo IHateThis;    // Servo heißt jetzt "IHateThis"
const int ROW_NUM = 4;  // Anzahl der Tastenfeld Reihen
const int COLUMN_NUM = 3; // Anzahl der Tastenfeld Zeilen
byte pin_rows[ROW_NUM] = { 9, 8, 7, 6 };  //die Pins für die Reihen des Tastenfelds
byte pin_column[COLUMN_NUM] = { 5, 4, 3 }; //die Pins für die Zeilen des Tastenfelds
char keys[ROW_NUM][COLUMN_NUM] = {
 { '1', '2', '3' },
 { '4', '5', '6' },
 { '7', '8', '9' },
 { '*', '0', '#' }
};
Keypad keypad = Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM);
char Passwort[5] = { '0', '1', '2', '3', '#' }; //Array mit Länge des Passworts (4 + #) und dem Passwort selbst (0123)
String inputPasswort;  // Variable um die eingegebenen Tasten abzuspeichern
void setup() {
 inputPasswort.reserve(4); 
 lcd.init();
 lcd.clear();
 lcd.backlight(); //Das Display soll beleuchtet sein
 IHateThis.attach(12);  //Servo ist an Pin 12 angeschlossen
 IHateThis.write(140);  //Servo ist anfangs in der Position 140 (Tresor ist zu)
}
void loop() {
 char Taste = keypad.getKey();    //Variable "Taste" ist hier definiert
 if (Taste != '*' && Taste != '#') { 
  lcd.setCursor(cursorPosition, 0); // Cursor position at position 0 of the first row of the LCD.
  lcd.print(Taste);         //Wenn eine Taste außer * und # gedrückt wird, wird diese auf dem Display angezeigt
  cursorPosition = cursorPosition + 1;
 }
 if (Taste == '#') { //Nachdem # gedrückt wurde, wird überprüft ob das eingegebene Passwort dem tatsächlichen Passwort entspricht
  if (inputPasswort == Passwort) {   //Wenn das eingegebene Passwort dem tatsächlichen Passwort entspricht, wird für 3 Sekunden "Passwort richtig" angezeigt. Danach wird der inhalt der Variable inputPasswort gelöscht, der Servo geöffnet, die Variable cursorPosition auf 0 zurückgesetzt und das Display geleert.
   lcd.setCursor(0, 0);
   lcd.print("Passwort richtig");
   delay(3000);
   inputPasswort = "";
   lcd.clear();
   cursorPosition = 0;
   lcd.setCursor(cursorPosition, 0);
   IHateThis.write(30);
  }
  if (inputPasswort != Passwort) {     //Wenn das eingegebene Passwort nicht dem eingegebenen Passwort entspricht, wird "Passwort falsch" für 3 Sekunden angezeigt, und danach die reset schleife ausgeführt
   lcd.clear();
   lcd.setCursor(0, 0);
   lcd.print("Passwort falsch");
   delay(3000);
   reset();
  }
 }
 if (Taste == '*') { //Wenn * gedrückt wird, wird die reset Schleife ausgeführt
  reset();
 }
}
void reset() {      
 inputPasswort = "";   //Alles was auf der Variable inputPasswort gespeichert war, wird gelöscht
 lcd.clear();       //Display wird geleert
 cursorPosition = 0;   //Die Variable cursorPosition wird auf 0 gesetzt
 IHateThis.write(140);  //Der Servo wird geschlossen
}
Arduino, Code, Arduino Uno

Meistgelesene Fragen zum Thema Arduino