Digispark comme dispositif d’entrée

Salut,

beaucoup d'entre vous se souviennent certainement du message: captures d'écran avec Digispark sur simple pression d'un bouton. Cependant, étant donné que nous recevons régulièrement des demandes de Support pour L'utilisation du Digispark, une version plus récente des définitions Digispark sont disponibles et le Code utilisé est convivial pour les débutants, mais pour la pratique, je voudrais vous présenter aujourd'hui la reprise améliorée D'un blogueur:

 

Matériel Utilisé:

La carte Digispark de 1 Euro, programmable sous L'IDE Arduino, et un bouton-poussoir pour déclencher la capture d'écran sont utilisés.

La carte Digispark se compose essentiellement d'un MCU attiny85 dont 6 sorties numériques 2 broches numériques simulent un Port USB via le logiciel Bootloader. Le protocole USB est entièrement représenté dans le logiciel.

Les ports numériques nécessitent donc 2 Ports (ports 4 et 3) pour L'interface USB pour la programmation et lors de l'utilisation de l'interface USB dans le programme utilisateur.

Il ne reste donc plus que 4 Ports utilisables pour votre propre application. Dans notre projet, nous utilisons le Port 0 pour le bouton-poussoir.

Figure: construction complète, Aucune alimentation externe n'est nécessaire.

 

Le bouton-poussoir est commuté comme normalement ouvert entre les ports étiquetés du Digispark GND et le Port 0. La récupération de Pullup normalement nécessaire peut être supprimée car nous utilisons une récupération de pullup commutable interne de L'ATtiny. Celui-ci sera activé ultérieurement dans le logiciel.

IDE Préparatifs:

Pour pouvoir programmer notre Digispark à l'aide de L'IDE Arduino, quelques travaux préparatoires doivent être effectués, car la carte ne peut pas être prise en charge ou programmée nativement par la carte.

Tout d'abord, même dans la Version la plus récente, L'Arduinoïde doit être installé de manière fonctionnelle.

Dans L'EDI lancé, sous Fichier & gt; Préférences & gt; URL D'administrateur de carte supplémentaire, veuillez indiquer l'URL:

http://digistump.com/package_digistump_index.json

une. L'emplacement est marqué en jaune.

Avec cette étape, les ressources Digistump deviennent sélectionnables ultérieurement dans le gestionnaire de cartes.

Lance maintenant L'administrateur du Conseil via Outils & gt; conseil & gt; administrateur du Conseil et sélectionne le type "contribué".

Dans la Liste, sélectionnez L'élément "Digistump AVR Boards by Digistump" avec la souris et cliquez sur le bouton "Installer".

Les outils et outils sont téléchargés et installés.

Vérifie maintenant si le paquet a été correctement installé. Ceci est reconnaissable par le lettrage turquoise "INSTALLED". Assurez-vous qu'au moins la Version 1.6.7 a été installée.

Installation des pilotes USB pour Digispark:

Téléchargez-vous sur la page: https://github.com/digistump/digiStumparduino/releases le Fichier Digistump.Drivers.zip de les télécharger et de l'extraire dans le Dossier "Digistump Drivers" dans le Fichier DPinst64.exe (Windows 64-Bit) ou DPinst.exe (Windows 32 Bit) désactivé.

Lors de l'Installation, Veuillez confirmer la requête.

Lors de l'Installation, Veuillez confirmer la requête.

Ce n'est que maintenant que le Digispark est connecté pour la première fois à l'ordinateur. Pour ce faire, ouvrez le gestionnaire de périphériques, connectez le Digispark à une interface USB libre et vérifiez que le Digispark est correctement reconnu comme étant le Digispark Bootloader sous "libusb-win32 devices".

Après le redémarrage de L'IDE Arduino, sélectionnez Outils > Board > Board Digispark Default 16.5 mhz.


Voici le Code:

 

// Digispark Code pour prendre une capture d'écran à L'aide D'un bouton sur P0.
// Testé sur Windows 10 version 1803

# inclure "DigiKeyboard.h"
# define KEY_Print 0x46 

const octet SwitchPin = 0;             // PinNummer (P0) est défini comme une constante pour optimiser l'espace disque.
const octet BuildInLed = 1;            // Buildin LED
octet SwitchBufferState = HIGH;           // Déclaration variable mémoire pour L'état des touches

void configuration() 
{   pinMode(SwitchPin, INPUT_PULLUP);   // La broche 0 du Digispark est définie sur Entrée numérique avec Pullup interne.   digitalWrite (BuildInLed,FAIBLE);      // Éteignez la LED interne
}

nul boucle() 
{   si (digitalRead(SwitchPin)== FAIBLE  &&  SwitchBufferState == ÉLEVÉ)    {     digitalWrite (BuildInLed,ÉLEVÉ);  // Allumez la LED interne, une capture d'écran sera prise     retard(80);                       // Bouton anti-rebond 80 ms     SwitchBufferState = FAIBLE;     DigiKeyboard.sendKeyStroke(KEY_Print,MOD_GUI_LEFT);  // Simulation de la frappe pour faire la capture d'écran                                                                                                               // (touche du logo Windows + bouton poussoir)     DigiKeyboard.retard(50);     }    si (digitalRead(SwitchPin)== ÉLEVÉ &&  SwitchBufferState == FAIBLE)    {     digitalWrite (BuildInLed,FAIBLE);   // Éteignez la LED interne     retard(80);                       // Bouton anti-rebond 80 ms     SwitchBufferState = ÉLEVÉ;    }   retard(100);
}

 

Le port 0 est activé en tant qu'entrée avec une résistance de rappel interne et est donc logiquement LOW actif. (HIGH inactif) Un bouton connecte ce port à GND lorsqu'il est pressé. L'état logique du port 0 est interrogé toutes les 100 ms dans la boucle principale. Si cela passe à la logique LOW par le bouton et était auparavant à l'état HIGH, puis après un temps d'attente de 80 ms pour le rebouncing du bouton, la combinaison de touches Windows Logo et Print est envoyée au PC. Le système d'exploitation prend ainsi une capture d'écran et la stocke dans l'ordre des captures d'écran.

Pour que les captures d'écran ne soient pas prises sans fin tant que le bouton est enfoncé, la variable indicateur "Switchbufferstate" est définie sur LOW de sorte que la prochaine fois dans la boucle, il soit reconnu que le bouton est toujours enfoncé et n'a pas été enfoncé à nouveau. La LED interne du Digispark s'allume tant que le bouton est enfoncé. Dès que le bouton est relâché, la LED interne s'éteint et la variable drapeau est réinitialisée.

Ensuite, le système est de retour dans son état initial et une capture d'écran peut être prise à nouveau en appuyant sur le bouton.

 

Jusqu'au prochain post :)

 

Projets pour avancé

3 commentaires

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

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés

Messages de blogs recommandés

  1. Installez maintenant ESP32 via l'administrateur de la carte
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA-Over the Air-ESP Programmation par WiFi