Hola a todos
muchos de ustedes recordarán la publicación: capturas de pantalla con Digispark con solo tocar un botón. Sin embargo, dado que recibimos regularmente solicitudes para el uso del Digispark en soporte, una versión más reciente de las definiciones de Digispark está disponible y el código utilizado es amigable para principiantes, pero para la práctica me gustaría presentarles hoy a la reelaboración mejorada de un blogger:
Hardware utilizado:
El tablero de 1 Euro digispark, que se puede programar bajo el IDE de Arduino, y se utiliza un botón para activar la captura de pantalla.
La placa Digispark consiste esencialmente en un Attiny85 MCU de sus 6 salidas digitales 2 pines digitales simulan un puerto USB a través del software bootloader. El protocolo USB está completamente asignado en el software.
Por lo tanto, los puertos digitales requieren 2 puertos (puertos 4 y 3) para la interfaz USB para la programación y cuando se utiliza la interfaz USB en el programa de usuario.
Por lo tanto, sólo 4 puertos siguen siendo utilizables para su propia aplicación. En nuestro proyecto, usamos el puerto 0 para el botón.
Figura: Configuración completa, ya no es necesaria ninguna fuente de alimentación externa.
El botón se cambia como contacto entre las conexiones etiquetadas del Digispark GND y el puerto 0. Se puede omitir la retícula pull-up normalmente necesaria, ya que utilizamos un soporte pullup conmutable interno del attiny. Esto se activará más adelante en el software.
Preparaciones IDE:
Para poder programar nuestro Digispark utilizando el IDE de Arduino, se debe realizar algún trabajo preparatorio, ya que la placa no es apoyada de forma nativa por el DIE o se puede programar.
En primer lugar, el ArduinoIDE en sí debe estar instalado en la última versión.
En el IDE iniciado en Archivo > Preferencias > URL de administrador de placa adicional, lleve la dirección URL:
http://digistump.com/package_digistump_index.json
Un. La ubicación está marcada en amarillo.
Con este paso, los recursos de Digistump en el administrador de la placa se podrán seleccionar más adelante.
Ahora inicia el administrador de la placa a través de Herramientas > Junta > Administrador de jabalíes y selecciona "Contribuido" como el tipo.
Seleccione la entrada "Digistump AVR Boards by Digistump" con el ratón de la lista y haga clic en el botón "Instalar".
Las herramientas y herramientas se descargan e instalan.
Ahora comprueba si el paquete se ha instalado correctamente. Esto se puede ver en las letras turquesa "INSTALLED". Asegúrese de que se ha instalado al menos la versión 1.6.7.
Instalación de los controladores USB para Digispark:
Cargar en la página: https://github.com/digistump/digiStumparduino/releases el archivo Digistump.Drivers.zip y lo desempaqueta en la carpeta "Digistump Drivers" Ejecuta el archivo DPinst64.exe (Windows 64 Bit) o DPinst.exe (Windows 32 Bit).
Durante la instalación, confirme la consulta.
Durante la instalación, confirme la consulta.
Sólo ahora el Digispark está conectado al ordenador por primera vez. Para ello, abra el administrador de dispositivos, conecte Digispark a una interfaz USB gratuita y compruebe si Digispark se reconoce correctamente como un gestor de arranque Digispark en "dispositivos libusb-win32".
Después de reiniciar el IDE de Arduino en Herramientas > Placa > Selección de placa Digispark Predeterminado 16,5 mhz.
Aquí está el código:
Digispark código para tomar una captura de pantalla por pulsador a P0. Probado en Windows 10 Versión 1803 #include "DigiKeyboard.h" #define KEY_Print 0x46 Const Byte SwitchPin = 0; El número de pin (P0) se define como una constante para optimizar el espacio en disco. Const Byte BuildInled = 1; Buildin LED Byte SwitchBufferState = Alto; Declaración MemoryVariable para el estado de la clave Vacío Configuración() { pinMode(SwitchPin, INPUT_PULLUP); El pin 0 del DigiSpark se define en la entrada digital con pullup interno. digitalWrite (BuildInled,Bajo); Apague el LED interno } Vacío Bucle() { Si (digitalRead(SwitchPin)== Bajo && SwitchBufferState == Alto) { digitalWrite (BuildInled,Alto); Encienda el LED interno, se crea la captura de pantalla Retraso(80); Botón Debounce 80 ms SwitchBufferState = Bajo; DigiKeyboard.sendKeyStroke(KEY_Print,MOD_GUI_LEFT); Simulación de la pulsación de tecla para tomar la captura de pantalla (tecla del logotipo de windows + pulsador) DigiKeyboard.Retraso(50); } Si (digitalRead(SwitchPin)== Alto && SwitchBufferState == Bajo) { digitalWrite (BuildInled,Bajo); Apague el LED interno Retraso(80); Botón Debounce 80 ms SwitchBufferState = Alto; } Retraso(100); }
El puerto 0 se activa como entrada con la corrección de extracción interna y, por lo tanto, es lógicamente LOW activo. (ALTO inactivo) Un botón conecta este puerto contra GND cuando se pulsa. En el bucle de bucle principal, el estado lógico del puerto 0 se consulta cada 100 ms. Si esto cambia a LOW lógico a través del botón y anteriormente estaba en el estado HIGH, después de un tiempo de espera de 80 ms para el magullado de alquiler clave a través de la interfaz USB, la combinación de teclas Logotipo de Windows e Impresión se envía al PC. Esto hace que el sistema operativo tome una captura de pantalla y la coloque en el orden de captura de pantalla.
Para evitar que se tomen capturas de pantalla interminables mientras se presiona el botón, la variable de marcador "Switchbufferstate" se establece en LOW para detectar que el botón todavía está presionado y no se ha vuelto a presionar en el siguiente paso de bucle. Mientras se pulsa el botón, el LED interno del Digispark se ilumina. Tan pronto como se suelta el botón, el LED interno se apaga y se restablece la variable de marcador.
Después de eso, el sistema está de vuelta en su estado original y una captura de pantalla se puede tomar de nuevo pulsando el botón.
Hasta el próximo post :)
4 comentarios
Mario
Da es in einigen Foren und auch hier Meldungen gibt, dass die Digisparks nicht erkannt werden: ich habe es auch mit zwei verschiedenen versucht und die Treiber dazu installiert, aber es hat anfangs trotzdem nicht geklappt. Die Lösung bei mir: den Digispark über einen USB-Adapter an einen USB-C Port am Laptop anschließen. So wurde der Digispark sofort erkannt. Zur Info: digispark rev3 auf Windows 11
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
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
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