Buongiorno a tutti, sto sviluppando un progetto con Arduino Nano originale e una schedina TTL-RS485.
Ho connesso la schedina di comunicazione come segue:
Pin DI -> Pin D12
Pin DE-RE -> Pin D11
Pin RO -> Pin D10
Il problema è che carico uno sketch per testare la comunicazione e tutto funziona. Se provo a caricare un altro sketch viene visualizzato il seguente errore:
*FQBN: arduino:avr:nano*
*Utilizzo della scheda 'nano' dalla piattaforma nella cartella: C:\Users\simo1\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6*
*Utilizzo del core 'arduino' dalla piattaforma nella cartella: C:\Users\simo1\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6*
*Rilevamento delle librerie utilizzate in corso...*
*C:\Users\simo1\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Users\simo1\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\simo1\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\eightanaloginputs C:\Users\simo1\AppData\Local\Temp\arduino\sketches\DDD0DA04CF120D73F8BE2C9CA9BC1B49\sketch\ChkRs485.ino.cpp -o nul*
*Alternative per SoftwareSerial.h: [SoftwareSerial@1.0]*
*ResolveLibrary(SoftwareSerial.h)*
* -> candidati: [SoftwareSerial@1.0]*
*C:\Users\simo1\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Users\simo1\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\simo1\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\eightanaloginputs -IC:\Users\simo1\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\SoftwareSerial\src C:\Users\simo1\AppData\Local\Temp\arduino\sketches\DDD0DA04CF120D73F8BE2C9CA9BC1B49\sketch\ChkRs485.ino.cpp -o nul*
*Utilizzo delle dipendenze delle librerie nella cache per i file: C:\Users\simo1\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\SoftwareSerial\src\SoftwareSerial.cpp*
*Sto generando i prototipi di funzione...*
*C:\Users\simo1\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Users\simo1\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\simo1\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\eightanaloginputs -IC:\Users\simo1\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\SoftwareSerial\src C:\Users\simo1\AppData\Local\Temp\arduino\sketches\DDD0DA04CF120D73F8BE2C9CA9BC1B49\sketch\ChkRs485.ino.cpp -o C:\Users\simo1\AppData\Local\Temp\3466371149\sketch_merged.cpp*
*C:\Users\simo1\AppData\Local\Arduino15\packages\builtin\tools\ctags\5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives C:\Users\simo1\AppData\Local\Temp\3466371149\sketch_merged.cpp*
*Compilazione dello sketch in corso...*
*"C:\\Users\\simo1\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Users\\simo1\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\simo1\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\eightanaloginputs" "-IC:\\Users\\simo1\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\libraries\\SoftwareSerial\\src" "C:\\Users\\simo1\\AppData\\Local\\Temp\\arduino\\sketches\\DDD0DA04CF120D73F8BE2C9CA9BC1B49\\sketch\\ChkRs485.ino.cpp" -o "C:\\Users\\simo1\\AppData\\Local\\Temp\\arduino\\sketches\\DDD0DA04CF120D73F8BE2C9CA9BC1B49\\sketch\\ChkRs485.ino.cpp.o"*
*Compilazione delle librerie in corso...*
*Compilazione della libreria "SoftwareSerial"*
*Uso il file precedentemente compilato: C:\Users\simo1\AppData\Local\Temp\arduino\sketches\DDD0DA04CF120D73F8BE2C9CA9BC1B49\libraries\SoftwareSerial\SoftwareSerial.cpp.o*
*Compilazione del core in corso...*
*Utilizzo del core precompilato: C:\Users\simo1\AppData\Local\Temp\arduino\cores\arduino_avr_nano_cpu_atmega328_696b634e75641c0741ee6ca340cc37e2\core.a*
*Collegare tutto insieme...*
*"C:\\Users\\simo1\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o "C:\\Users\\simo1\\AppData\\Local\\Temp\\arduino\\sketches\\DDD0DA04CF120D73F8BE2C9CA9BC1B49/ChkRs485.ino.elf" "C:\\Users\\simo1\\AppData\\Local\\Temp\\arduino\\sketches\\DDD0DA04CF120D73F8BE2C9CA9BC1B49\\sketch\\ChkRs485.ino.cpp.o" "C:\\Users\\simo1\\AppData\\Local\\Temp\\arduino\\sketches\\DDD0DA04CF120D73F8BE2C9CA9BC1B49\\libraries\\SoftwareSerial\\SoftwareSerial.cpp.o" "C:\\Users\\simo1\\AppData\\Local\\Temp\\arduino\\sketches\\DDD0DA04CF120D73F8BE2C9CA9BC1B49/..\\..\\cores\\arduino_avr_nano_cpu_atmega328_696b634e75641c0741ee6ca340cc37e2\\core.a" "-LC:\\Users\\simo1\\AppData\\Local\\Temp\\arduino\\sketches\\DDD0DA04CF120D73F8BE2C9CA9BC1B49" -lm*
*"C:\\Users\\simo1\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "C:\\Users\\simo1\\AppData\\Local\\Temp\\arduino\\sketches\\DDD0DA04CF120D73F8BE2C9CA9BC1B49/ChkRs485.ino.elf" "C:\\Users\\simo1\\AppData\\Local\\Temp\\arduino\\sketches\\DDD0DA04CF120D73F8BE2C9CA9BC1B49/ChkRs485.ino.eep"*
*"C:\\Users\\simo1\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -R .eeprom "C:\\Users\\simo1\\AppData\\Local\\Temp\\arduino\\sketches\\DDD0DA04CF120D73F8BE2C9CA9BC1B49/ChkRs485.ino.elf" "C:\\Users\\simo1\\AppData\\Local\\Temp\\arduino\\sketches\\DDD0DA04CF120D73F8BE2C9CA9BC1B49/ChkRs485.ino.hex"*
*Uso la libreria SoftwareSerial alla versione 1.0 nella cartella: C:\Users\simo1\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\SoftwareSerial *
*"C:\\Users\\simo1\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-size" -A "C:\\Users\\simo1\\AppData\\Local\\Temp\\arduino\\sketches\\DDD0DA04CF120D73F8BE2C9CA9BC1B49/ChkRs485.ino.elf"*
*Lo sketch usa 5192 byte (16%) dello spazio disponibile per i programmi. Il massimo è 30720 byte.*
*Le variabili globali usano 367 byte (17%) di memoria dinamica, lasciando altri 1681 byte liberi per le variabili locali. Il massimo è 2048 byte.*
*"C:\Users\simo1\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\simo1\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v -V -patmega328p -carduino "-PCOM14" -b115200 -D "-Uflash:w:C:\Users\simo1\AppData\Local\Temp\arduino\sketches\DDD0DA04CF120D73F8BE2C9CA9BC1B49/ChkRs485.ino.hex:i"*
*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:\Users\simo1\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"*
* Using Port : COM14*
* Using Programmer : arduino*
* Overriding Baud Rate : 115200*
*avrdude: ser_open(): can't open device "\\.\COM14": Accesso negato.*
*avrdude done. Thank you.*
*Caricamento non riuscito: errore durante il caricamento: exit status 1*
é il quarto arduino nano che provo, con tutti e quattro il risultato è il medesimo.
l'errore si ripresenta anche se carico altri sketch. Diventa quindi impossibile caricare qualsiasi altro sketch. Dove sbaglio?
lo sketch caricato è il seguente:
#include <SoftwareSerial.h>
#define RX 0
#define TX 1
#define SSTX 12
#define SSRX 3 //prima era 10
#define SSDERE 11
#define pdA 5
#define ppA 4
#define pdC 10// prima era 3
#define ppC 2
#define pZC 15
#define pZA 14
#define pL1 6
#define pL2 7
SoftwareSerial RS485(SSRX, SSTX); // RX, TX
String MyString="";
int I1 = 0;
int I2 = 0;
void setup() {
Serial.begin(9600);
RS485.begin(9600);
pinMode(SSDERE,OUTPUT);
Rs485_ReadMode();
}
void loop() {
MyString="";
if (RS485.available()){ // se c'è qualcosa in arrivo dalla seriale
Serial.println("Incoming data on 485");
Rs485_ReadString();
if(MyString!=""){
Serial.print("Stringa letta :");
Serial.println(MyString);
Serial.print("I1 :");
Serial.println(I1);
Serial.print("I2 :");
Serial.println(I2);
}
}
}
void Rs485_ReadMode(){digitalWrite(SSDERE,LOW);}
void Rs485_WriteMode(){digitalWrite(SSDERE,HIGH);}
void Rs485_ReadString(){
while (RS485.available()) {
delay(5);
char c = RS485.read();
if (c != '#') {
MyString += c;
} else {
return;
}
}
}
void ParseInt(){
String I1s = "";
String I2s = "";
int L = MyString.length();
I1s=MyString[2];
I1s+=MyString[3];
I1=I1s.toInt();
for (int i = 5; i < L; i++) {
if (isDigit(MyString[i])) { // tests if myChar is a digit
I2s+=MyString[i];
}else {
break;
}
}
I2=I2s.toInt();
}
Grazie per l'eventuale aiuto.

