Digispark come dispositivo di input

Ciao a tutti,

Molti di voi ricorderanno il post: Screenshot con Digispark sulla tastiera.Tuttavia, poiché riceviamo regolarmente richieste di utilizzo del parco digitale nel nostro supporto, una nuova versione delle definizioni di Digispark sono disponibili e il codice utilizzato è user-friendly, ma in pratica vale la pena di migliorare, vorrei presentarvi oggi il lavoro migliorato di un blogger:

 

Uso hardware:

Viene utilizzato il pezzo in euro della scheda programmabile di Digitaparco di Arduino IDE e un pulsante per attivare lo screenshot.

La scheda Digispark è costituita essenzialmente da un Attiny85 MCU di cui sei uscite digitali 2 perni digitali attraverso il software bootloader simulare una port a USB.Il protocollo USB è completamente mostrato nel software.

Le porte digitali richiedono quindi due porte (porte 4 e 3) per l'interfaccia USB per la programmazione e per l'utilizzo dell'interfaccia USB nel programma utente.

Solo quattro porte rimangono utilizzabili per la vostra applicazione.Nel nostro progetto usiamo Port 0 per la tastiera.

Figura: Costruzione completa, non è più necessaria alcuna alimentazione esterna.

 

Il pulsante è attivato come connettore tra le connessioni etichettate del parco digitale GND e Port 0.La resistenza normalmente necessaria alla polpa può essere omessa in quanto utilizziamo una resistenza interna alla pasta flessibile degli Attinys.Questo sarà attivato più tardi nel software.

IDE Preparazioni:

Per poter programmare il nostro parco digitale con l'Arduino IDE, è necessario fare qualche lavoro preliminare, in quanto la scheda non è supportata in maniera nativa rispettivamente da DIE.può essere programmato.

In primo luogo, lo stesso Arduinoide deve essere installato nell'ultima versione.

Nell'IDE iniziato, sotto File > Defaults > Supplement Board Manager URLS, specificare l'URL:

http://digistump.com/package_digistump_index.json

Uno.Il punto è marcato giallo.

Con questo passo, le risorse di digimong nell'amministratore del consiglio possono essere selezionate in seguito.

Avviare l'amministratore del consiglio utilizzando strumenti > Board > board amministratore e selezionare "Contributo" come il tipo.

Selezionare la voce "Digistum AVR Boards by Digistemp" dall'elenco con il mouse e fare clic sul pulsante "Installa".

Gli strumenti e gli strumenti sono scaricati e installati.

Ora controlla se il pacchetto è stato installato correttamente.Questo può essere visto dall'iscrizione turca "INSTALLAD".Assicuratevi che sia stata installata almeno la versione 1.6.7.

Installazione di driver USB per il parco digitale:

Carica alla pagina: https://github.com/digistump/digiStumparduino/releases Scarica il file Digistump.Drivers.zip e disfa il file nella cartella "Digistum Drivers" Esegui il file DPinst64.exe (Windows 64 Bit) o DPinst.exe (Windows 32 Bit).

Si prega di confermare la query durante l'installazione.

Si prega di confermare la query durante l'installazione.

Solo ora il parco digitale sarà collegato al computer per la prima volta.Apre il gestore del dispositivo, collega il Digispark ad un'interfaccia USB gratuita e controlla se il Digispark è correttamente riconosciuto come un bootloader Digispark sotto "dispositivi libusb-win32".

Dopo aver riavviato l'Arduino IDE, selezionare > Board > Board Digispark Default 16.5 mz.


Ecco il codice:

 

// Digispark codice per creare uno screenshot per pulsante su P0.
// Testato sotto Windows 10 Version 1803

«35; comprende DigiKeyboard.h.
35; definire Stampa CHIAVE 0x46 

to scambio SwitchPin. = 0;             // Pin number (P0) è definito come una costante per ottimizzare lo spazio di archiviazione.
to scambio BuildinLed = 1;            // Buildin LED
scambio SwitchBuffer = ALTA;           // Dichiarazione Variabile della memoria per lo stato chiave

vuoto setComment() 
{   pinMode(SwitchPin., PUNTO DI INPUT);   // Pin 0 del DigiSpark è definito su input digitali con carrucola interna.   digitalacWrite (BuildInLed,LOW);      // Spegni il LED interno
}

vuoto cappio() 
{   se (Leggi digitale(SwitchPin)== LOW  &&  Sensore stato Buffer == ALTA)    {     digitalWrite (BuildInLed,ALTA);  // Attiva il LED interno, verrà acquisito uno screenshot     ritardo(80);                       // Pulsante Debounce 80 ms     Sensore stato Buffer = LOW;     DigiKeyboard.sendKeyStroke(KEY_Print,MOD_GUI_LEFT);  // Simulazione della sequenza di tasti per acquisire lo screenshot                                                                                                               // (tasto logo Windows + pulsante)     DigiKeyboard.ritardo(50);     }    se (Leggi digitale(SwitchPin)== ALTA &&  Sensore stato Buffer == LOW)    {     digitalWrite (BuildInLed,LOW);   // Spegni il LED interno     ritardo(80);                       // Pulsante Debounce 80 ms     Sensore stato Buffer = ALTA;    }   ritardo(100);
}

 

La porta 0 è attivata come ingresso con una resistenza di pull-up interna ed è quindi logicamente BASSA attiva. (ALTO inattivo) Un pulsante collega questa porta a GND quando viene premuto. Lo stato logico della porta 0 viene interrogato ogni 100 ms nel loop principale. Se questo passa alla logica BASSO dal pulsante ed era precedentemente nello stato ALTO, quindi dopo un tempo di attesa di 80 ms per il riavvio del pulsante, la combinazione di tasti Logo Windows e Stampa viene inviata al PC. Questo fa sì che il sistema operativo acquisisca uno screenshot e lo memorizzi nell'ordine degli screenshot.

In modo che gli screenshot non vengano presi all'infinito finché si tiene premuto il pulsante, la variabile flag "Switchbufferstate" è impostata su BASSO in modo che la volta successiva attraverso il loop venga riconosciuto che il pulsante è ancora premuto e non è stato premuto di nuovo. Il LED interno del Digispark si illumina fino a quando viene premuto il pulsante. Non appena il pulsante viene rilasciato, il LED interno si spegne e la variabile flag viene ripristinata.

Quindi il sistema è tornato al suo stato iniziale e uno screenshot può essere ripreso premendo il pulsante.

 

Fino al prossimo post :)

 

Projekte für fortgeschrittene

3 Kommentare

Michael

Michael

Bei mir hat das auch nicht funktioniert, es fehlt eine zusätzliche Kommandozeile um das Problem zu lösen. Als allererste Zeile in der Void Loop, vor dem ersten if, muss noch folgendes rein, dann läuft es:

DigiKeyboard.sendKeyStroke(0);

Savas kuzu

Savas kuzu

Leider werden an meinem Laptop keines der 5 Digisparks erkannt. Habe alles genau so ausgeführt wie es hier drinnen steht. Sind die MC vielleicht alle defekt? Bitte um Hilfe.

Thomas

Thomas

Nun möchte ich mal einen Kommentar schreiben.
Und zwar habe ich eine Bitte. Ich finde eure Bastelarbeiten wirklich spannend und anregend, weiter so ! Aber beginnt bei euren Artikeln immer damit, was das Ziel ist und welche Funktionen (grob) damit möglich sind. Das gilt für alle Artikel von euch. Ich kann verstehen , dass ihr sofort mit der Anleitung zum Bauen anfangen wollt, aber für mich (als Semi-Bastler) ist nicht immer ersichtlich, was ihr bauen wollt.
Schöne Grüße
Thomas

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Post di blog consigliati

  1. Installa ESP32 ora dal gestore del consiglio di amministrazione
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - Programmazione ESP tramite WLAN