Hallo zusammen,
ich arbeite gerade an einer Remote Steuerung für ein Netzteil. Dafür benutze ich aktuell einen ELEGOO UNO R3 und SerialCominstruments ein Programm zur Visualisierung serieller Daten von der Com-Schnittstelle. Um den Sketch zu schreiben benutze ich die ArduinoIDE. Den Sketch zu diesem Programm habe ich fertig und habe alles auch bereits erfolgreich getestet. Seit letzter Woche habe ich aber das Problem, dass ich meinen Sketch nicht mehr hochladen kann und immer eine Fehlermeldung bekomme wenn ich diesen hochladen möchte. Ich habe in mehreren Foren nach einer Lösung gesucht und mehrere Lösungsmöglichkeiten ausprobiert:
-Reset des Arduinos
-Austauschen der Kabel
-Versuch mit einem andern Arduino
-Aktualisierung der Treiber
Ich habe in der IDE auch den richtigen ComPort ausgewählt, der Sketch lässt sich trotzdem nicht hochladen, auch die andern Lösungsvorschläge, die ich zu dem Fehler gefunden habe, haben nicht geholfen.
Was ich mir noch überlegt habe, ist das es bei dem Arduino der Bootloader kaputt gegangen ist und ich darum keine Sketches mehr hochladen kann.
Wäre das möglich? Kann jemand etwas zu der Fehlermeldung sagen?
Fehlermeldung:
avrdude: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"
Using Port : COM6
Using Programmer : arduino
Overriding Baud Rate : 115200
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xdf
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xfe
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x80
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xfe
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xfe
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
avrdude done. Thank you.
Anbei noch den Code, aber an dem sollte aber eigentlich nicht liegen:
const unsigned int SERIAL_KANALID_ISTSPANNUNG = 1; // Kanal von SerialComInstruments für die aktuelle Spannung
const unsigned int SERIAL_KANALID_RELAIZUSTAND_EIN = 70; // Kanal von SerialComInstruments der das Relais einschaltet
const unsigned int SERIAL_KANALID_RELAIZUSTAND_AUS = 71; // Kanal von SerialComInstruments der das Relais ausschaltet
const unsigned int SERIAL_KANALID_SOLLSPANNUNG = 80; // Kanal von SerialComInstruments zur Eingabe der gewünschten Spannung
const unsigned int SERIAL_KANALID_RELAIZUSTAND_LED = 60; // Kanal von SerialComInstruments der über die LED anzeigt, ob das Relais an oder aus geschaltet ist
const unsigned int SERIAL_KANALID_KLEMME_EIN = 72; // Kanal von SerialComInstruments der die Klemme einschaltet
const unsigned int SERIAL_KANALID_KLEMME_AUS = 73; // Kanal von SerialComInstruments der die Klemme ausschaltet
const unsigned int SERIAL_KANALID_KLEMME_LED = 60; // Kanal von SerialComInstruments der über die LED anzeigt, ob die Klemme ein oder aus ist
const unsigned int PWM_Output_Pin = 10; // Definiert Pin für das Netzteil
const unsigned int relayPin = 2; // Definiert Pin für Relais
const unsigned int KlemmePin = 4; // Definiert Pinn für Klemme
float AnalogOutput = 0; // Spannung in [V] hier verändern
float IstSpannung = 0; // Tatsächliche Spannung am Netzteil
const unsigned int analogPin = A2 ; // Pin, der gelesen werden soll: Pin A2
unsigned int PWMSignal = 0; // Resultierende PWM-Impulsbreite aus dem AnalogenOutput (Ausgangsspannung)
char zeichen;
int kanalId;
float wert;
void setup() {
//put your setup code here, to run once:
Serial.begin(38400); // Serielle Kommunikation mit 38400 Baud Starten
pinMode(relayPin, OUTPUT); // Deklariert digitalen Kanal 2 auf dem Arduino-Board als Output
pinMode(KlemmePin, OUTPUT); // Deklariert digitalen Kanal 4 auf dem Arduino-Board als Output
delay(2000); // Programm wartet 2 Sekunden und bootet dann
}
void loop() {
// put your main code here, to run repeatedly:
while (Serial.available()) { // Solange serielle Eingabe vorhanden ist
zeichen = Serial.read(); // nächstes Zeichen einlesen
if (zeichen == '#') { // Wenn Zeichen eine Raute ist:
kanalId = Serial.parseInt(); // eingehende Ganzzahl in Variable "kanalId" einlesen.
// gelesen wird bis zum nächsten Zeichen, welches keine Ganzzahl ist.
zeichen = Serial.read(); // nächstes Zeichen einlesen.
if (zeichen == 'M') { // Wenn gelesenes Zeichen ein "M" ist:
wert = Serial.parseFloat(); // eingehende Fließkommazahl einlesen.
// gelesen wird bis zum nächsten Zeichen, welches keine Fließkommazahl ist.
zeichen = Serial.read(); // nächstes Zeichen einlesen.
if (zeichen == '<') { // Wenn gelesenes Zeichen ein Kleiner-Zeichen ist:
schalte(kanalId, wert); // rufe "schalte" Methode mit eingelesenem Kanal und Wert auf.
}
}
}
}
IstSpannung = analogRead(analogPin) * 5.7; // Pin einlesen
sendStringInt(SERIAL_KANALID_ISTSPANNUNG, (IstSpannung)); // Analog-Wert vom Poti auslesen und per Serieller Kommunikation übermitteln an #01
delay(1000); // 100ms warten
}
//------------------------------------------------------
// Senden eines Telegramms/Text an den PC
//------------------------------------------------------
void sendStringInt(byte instrNr, int mWert) {
Serial.print('#'); // Raute als Segmentanfang seriell ausgeben
Serial.print(instrNr); // Kanalnummer seriell ausgeben
Serial.print('M'); // M als Trennzeichen seriell ausgeben
Serial.print(mWert); // Messwert seriell ausgeben
Serial.println('<'); // Kleiner als Ende des Segments mit Zeilenumbruch seriell ausgeben
}
void schalte(int kanal, float wert) {
if (kanal == SERIAL_KANALID_SOLLSPANNUNG)
{
if (wert >= 1)
{
AnalogOutput = wert;
}
else
{
AnalogOutput = 1;
}
PWMSignal = ( 10 * AnalogOutput ) / 2 ;
analogWrite( PWM_Output_Pin, PWMSignal );
}
else if (kanal == SERIAL_KANALID_RELAIZUSTAND_EIN)
{
digitalWrite(relayPin, wert);// turn relay OFF/ON
sendStringInt(SERIAL_KANALID_RELAIZUSTAND_LED, 1);
}
else if (kanal == SERIAL_KANALID_RELAIZUSTAND_AUS)
{
digitalWrite(relayPin, wert);// turn relay OFF/ON
sendStringInt(SERIAL_KANALID_RELAIZUSTAND_LED, 0);
}
else if (kanal == SERIAL_KANALID_KLEMME_EIN)
{
digitalWrite(KlemmePin, wert);// turn relay OFF/ON
sendStringInt(SERIAL_KANALID_KLEMME_LED, 2);
}
else if (kanal == SERIAL_KANALID_KLEMME_AUS)
{
digitalWrite(KlemmePin, wert);// turn relay OFF/ON
sendStringInt(SERIAL_KANALID_KLEMME_LED, 0);
}
}