salve, mi chiamo thomas, per il mio progetto d'esame volevo fare una keyboard HID, solo che con questo codice:
#include <SoftwareSerial.h>
uint8_t buf[8] = { 0 }; /* Keyboard report buffer */
#define KEY_LEFT_CTRL 0x01
#define KEY_LEFT_SHIFT 0x02
#define KEY_RIGHT_CTRL 0x10
#define KEY_RIGHT_SHIFT 0x20
void setup()
{
Serial.begin(9600); //connection between chips
delay(200);
pinMode(8,INPUT);
pinMode(9,INPUT);
pinMode(10,INPUT);
pinMode(11,INPUT);
pinMode(12,INPUT);
pinMode(13,INPUT);
pinMode(7,OUTPUT);
}
void type(char *str)
{
char *chp = str;
delay(100);
while (*chp) {
if ((*chp >= 'a') && (*chp <= 'z')) {
buf[2] = *chp - 'a' + 4; //Converts from char to usb code from HUT1_11.pdf
} else if ((*chp >= 'A') && (*chp <= 'Z')) {
buf[0] = KEY_LEFT_SHIFT; /* Caps */
buf[2] = *chp - 'A' + 4; //Converts from char to usb code from HUT1_11.pdf
} else if ((*chp >= '0') && (*chp <= '9')) {
buf[2] = *chp - '0' + 30; //Converts from char to usb code from HUT1_11.pdf
} else {
switch (*chp) {
case '1':
buf[2] = 0x04; // a
break;
case '2':
buf[2] = 0x26; // w
break;
case '4':
buf[2] = 0x22; // s
break;
case '8':
buf[2] = 0x07; // d
break;
case '16':
buf[2] = 0x44; // space
break;
case '32':
buf[2] = 0x04; // q
break;
default:
/* Character not handled. To do: add rest of chars from HUT1_11.pdf */
//buf[2] = 0x37; // Period
break;
}
}
Serial.write(buf, 7); // Send keypress
buf[0] = 0;
buf[2] = 0;
Serial.write(buf, 7); // Release key
chp++;
}
}
void loop()
{
char carattere[6];
int i;
carattere[0]=digitalRead(8);
carattere[1]=digitalRead(9);
carattere[2]=digitalRead(10);
carattere[3]=digitalRead(11);
carattere[4]=digitalRead(12);
carattere[5]=digitalRead(13);
type(carattere);
}
mi viene fuori questo problema
Arduino: 1.6.3 (Windows 7), Плата"Arduino Uno"
Sketch uses 2 734 bytes (8%) of program storage space. Maximum is 32 256 bytes.
Global variables use 258 bytes (12%) of dynamic memory, leaving 1 790 bytes for local variables. Maximum is 2 048 bytes.
avrdude: ser_open(): can't open device "\\.\COM1": ?? ??????? ????? ????????? ????.
???????? ???????? ?? ?????. ??? ?????????? ????, ?????? http://www.arduino.cc/en/Guide/Troubleshooting#upload .
Board at COM1 is not available
Это сообщение будет содержать больше информации чем
"Отображать вывод во время компиляции"
включено в Файл > Настройки
qualcuno sa come risolvere il problema? ho un arduino Uno Rev 3
Mmm ... mi sembra strano che Arduino sia su Com1 ... sei sicuro che sia quella che viene creata come "porta virtuale" quando lo attacchi alla USB ?
Fai una cosa, vai sul pannello dei device di Win (... non mi chiedere come, è un lontano ricordo di Win ... ora lavoro su OS X) e controlla le varie seriali. Anzi, se ci fai anche un "Print Screen" e lo alleghi, ci guardiamo anche noi ...
adesso, quando collego arduino mi da un ulteriore problema:
rimane una keyboard HID, con il risultato che :
la tastiera non funziona come dovrebbe
il mouse ha lo stesso problema della tastiera
anche scollegandolo non torna nulla alla normalità
...
ho provato anche a scrivere il bootloader, ma mi viene fuori questo messaggio
Arduino:1.6.3 (Windows 7), Scheda:"Arduino Uno"
C:\Users\Kristina\Desktop\Arduino uno Rev 3\programma\Arduino\hardware\tools\avr/bin/avrdude -CC:\Users\Kristina\Desktop\Arduino uno Rev 3\programma\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cstk500v2 -Pusb -e -Ulock:w:0x3F:m -Uefuse:w:0x05:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m
avrdude: Version 6.0.1, compiled on Mar 30 2015 at 14:56:06
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "C:\Users\Kristina\Desktop\Arduino uno Rev 3\programma\Arduino\hardware\tools\avr/etc/avrdude.conf"
Using Port : usb
Using Programmer : stk500v2
Errore durante la scrittura del bootloader
avrdude: usbdev_open(): did not find any USB device "usb"
e facendo come mi ha suggerito gpb01 l'altra volta, di mostrare l'output dettagliato durante la compilazione l'errore che mi viene fuori è questo ( se può aiutarvi maggiormente ad aiutarmi ):
avrdude: Version 6.0.1, compiled on Mar 30 2015 at 14:56:06
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "C:\Users\Kristina\Desktop\Arduino uno Rev 3\programma\Arduino\hardware\tools\avr/etc/avrdude.conf"
Using Port : COM1
Using Programmer : arduino
Overriding Baud Rate : 115200
avrdude: ser_open(): can't open device "\\.\COM1": Impossibile trovare il file specificato.
avrdude done. Thank you.
o meglio, mi sembra sia un errore, perchè ciò che vedo è questo:
No, scusa, ma per programmarlo, come ti è stato detto, NON può simulare un device USB ...
DEVI ripristinare il firmware originale sul convertitore USB <--> Seriale e devi vedere Arduino tra le COMx e non come USB ... altrimenti non lo programmi.
Inoltre, cortesemente, ALLEGA l'immagine originale e NON includerla ridotta nel messaggio che ... non si legge un bel nulla ...
ah, mi spiace.... beh adesso l'ho staccato e riattaccato e non so come mai mi è comparso tra i com ( non capisco perchè fa quello che gli pare : )
come potete vedere qua:
prima era su com4, l'ho messa io su com1, ma neanche così funziona
mi da lo stesso errore di prima
e poi scusa gugliemo ma mi ero confuso, perchè TEORICAMENTE dovevo averlo riprogrammato, o almeno mi sembrava dato che prima mi veniva visualizzato con il nume di : Keyboard HID, nella sezione dedicata alle tastiere:
Se era su COM4 perché sei andato a toccare le cose ? ? ? :o :o :o
Lascialo sulla COMx che gli assegna il sistema e, prima di programmare, verifica sempre che la COMx che hai scelto in Arduino IDE sia la stessa che gli ha assegnato il sistema operativo.
DanteAuditore:
... ma non so come impostarlo nell'IDE
... come sempre ... magari, prima di avventurarsi in cose complicate, studiare le BASI ... no ? ? ?
Mah ...
...comunque "Arduino IDE -> Tools -> [Serial] Port" (... la parola Serial è presente nella 1.0.6, ma mi sembra sia omessa nella 1.6.4) e li scegli la VERA porta a cui è connesso Arduino e che ti da il Sistema Operativo SENZA tue manipolazioni !
su consiglio di un prof. ho cambiato il programma:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(, 13);
uint8_t buf[8] = { 0 }; /* Keyboard report buffer */
#define KEY_LEFT_CTRL 0x01
#define KEY_LEFT_SHIFT 0x02
#define KEY_RIGHT_CTRL 0x10
#define KEY_RIGHT_SHIFT 0x20
//QUA CI SONO LE PREMESSE
void setup()
{
Serial.begin(9600); //connection between chips
delay(200);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(13, OUTPUT);
delay(50)
}
//QUI C'è IL MAIN
void loop()
{
char carattere[6];
int i;
carattere[0] = digitalRead(6);
carattere[1] = digitalRead(7);
carattere[2] = digitalRead(8);
carattere[3] = digitalRead(9);
carattere[4] = digitalRead(10);
carattere[5] = digitalRead(11);
type(carattere);
}
// QUI INIZIA LA FUNZIONE CHE CONVERTE IN CHAR
void type(char *str)
{
char *chp = str;
while (*chp) {
switch (*chp) {
case '1':
buf= 0x04; // a
break;
case '2':
buf= 0x26; // w
break;
case '4':
buf= 0x22; // s
break;
case '8':
buf= 0x07; // d
break;
case '16':
buf= 0x44; // space
break;
case '32':
buf= 0x04; // q
break;
default:
/* Character not handled. To do: add rest of chars from HUT1_11.pdf */
//buf[2] = 0x37; // Period
break;
}
}
Serial.write(buf); // Send keypress
buf= 0;
}
}
Il problema adesso è cambiato, ora posso caricare programmi sull'arduino ( prima era un problema di driver, sbagliavo ad aggiornare) però non so perchè, lo sketch ha problemi:
nella compilazione e nel caricamento su arduino ( che presumo esegua anche la compilazione), lo sketch non compila: non nel senso che da errori di compilazione, ma che la barretta del caricamento della compilazione non va avanti neanche se lo lascio fermo 20 minuti: