Apple-style LED pulsé à l’aide d’un microcontrôleur de 1,30 $ (5 / 6 étapes)

Étape 5: Le code

Voici mon code.  J’espère que c’est assez bien a commenté.

 /* LED Pulsate with PWM */ #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <avr/sleep.h> int main() { // Turn on LED output pin DDRB |= _BV(DDB0); // Clear OC0A on match TCCR0A |= _BV(COM0A1); // Set timer to count with F_CPU / 64 TCCR0B |= _BV(CS10); // F_CPU TCCR0B |= _BV(CS01) | _BV(CS00); // /64 prescale // Use Fast PWM, OCRA TOP TCCR0A |= _BV(WGM00); TCCR0A |= _BV(WGM01); //TCCR0B |= _BV(WGM02); // Initial value for our pulse width is 0 OCR0A = 0x00; uint8_t dir = 1; // Direction uint16_t div = 500; // # of clocks per inc/decrement uint16_t stall = 0; // Initial stall counter uint16_t stall_time = 500; // # of clocks to stall at top/bottom for(;;) { // We only want to update every div counts if(TCNT0 % div != 0) continue; // Stall at the top and bottom, and change direction if(OCR0A == 255 || OCR0A == 0) { // Switch directon at top if(OCR0A == 255) dir = -1; else { // Disable LED at bottom // And switch direction DDRB &= ~(_BV(DDB0)); dir = 1; } while(stall < stall_time) { ++stall; _delay_ms(10); } // Turn output back on if necessary if(OCR0A == 0) DDRB |= _BV(DDB0); stall = 0; } // General case - increment direction either way OCR0A += dir; } return 0; } 

J’espère que ce code est auto-documenté. Fondamentalement, nous allons changer la largeur d’impulsion toutes horloges quelques centaines dans un sens ou dans l’autre. Nous sont un cas spécial pour quand nous serons vers le haut ou bas (changer de direction et s’attardent), à l’instar de l’Apple fait des choses. Il y a un autre cas particulier quand on veut désactiver complètement la LED en bas - si nous ne faisons pas cela, il a toujours un (1/256) % duty cycle et vous pouvez le voir. Dans le cas contraire, le code doit être assez concis. Critique constructive est encouragée.

Articles Liés

Super Mario Bros sur un écran à matrice 8 x 8 LED RVB à l’aide d’un microcontrôleur pic

Super Mario Bros sur un écran à matrice 8 x 8 LED RVB à l’aide d’un microcontrôleur pic

c'est le dernier clip vidéo: (voir ci-dessous pour la vieille vidéo) j'ai va télécharger un instructable de comment vous pouvez faire votre propre système de jeu LEDBOY qui vous permettra de jouer à ce jeu. Veuillez noter que ce jeu est encore en cha
Système de réservation de bus intelligents à l’aide de boulon microcontrôleur

Système de réservation de bus intelligents à l’aide de boulon microcontrôleur

Bonjour il y a collègues inventeurs,Je voudrais partager quelques expériences que moi et mon équipe a gagné lors de la création d'un projet de système de réservation de bus Smart, qui m'a amené à utiliser un Arduino et l' incroyable BOLT micro-contrô
Couleur de RVB LED ambiance simple potentiomètre sans microcontrôleur

Couleur de RVB LED ambiance simple potentiomètre sans microcontrôleur

afficher les combinaisons de couleur de couleur LED sans utiliser un microcontrôleurvous pouvez faire un Simple couleur Cycle affichage pour RVB (rouge, vert, bleu) LEDÉtape 1: Ce que vous devez Vous aurez besoin :1] potentiomètre 1 K x3Résistance de
Simple éclairage « LED Cube » (sans utiliser le microcontrôleur)

Simple éclairage « LED Cube » (sans utiliser le microcontrôleur)

Avant de démarrer la lecture, je tiens à dire ce « cube LED » ne pas contrôlé par microcontrôleur, il juste un cube « LED »-comme l'éclairage...Ce cube de LED à l'aide de 27 LED qui soi change couleur, ils sont tous souder en parallèle et l'alimentat
Lampe LED Steampunk à l’aide de vieilles ampoules

Lampe LED Steampunk à l’aide de vieilles ampoules

Dans ce instructable je vais vous montrer comment faire une lampe LED Steampunk à l'aide de vieilles ampoules.J'ai voulu faire une lampe Steampunk de vieilles ampoules pendant une longue période, mais j'étais toujours occupé avec d'autres projets. Ré
DIY cuivre Style LED illuminateur de peinture

DIY cuivre Style LED illuminateur de peinture

vous avez une peinture ou une photographie, que vous voulez éclairer ? Pourquoi utiliser une ampoule ancienne, ennuyeuse, quand on peut faire un beaucoup plus illuminateur efficace de l'énergie, qui est une œuvre d'art en soi.Le cuivre est un métal t
Contrôle LED RGB à l’aide de Amarino Nano 1.0

Contrôle LED RGB à l’aide de Amarino Nano 1.0

Ce qui est Amarino Nano 1.0Il s'agit de mon nouveau kit de bricolage pour Android-Arduino communication via Bluetooth.Amarino Nano utilise particulièrement Arduino Nano, alors, j'ai utilisé le titre comme « Nano ». C'est un kit très simple pour teste
Comment faire un clignotement de LED unique à l’aide d’un Comité d’Arduino Uno

Comment faire un clignotement de LED unique à l’aide d’un Comité d’Arduino Uno

Aujourd'hui, on va être illustrant comment faire un clignotement de LED unique à l'aide d'une carte Arduino Uno. En suivant chaque étape, vous permettra d'accomplir cet objectif.Vous aurez besoin de ce qui suit :Une carte ArduinoConseil de painCâble
Multifonction contrôleur LED RVB à l’aide de PIC12F675

Multifonction contrôleur LED RVB à l’aide de PIC12F675

multifonction contrôleur LED RVB à l'aide de faible coût PIC12F675 microcontrôleur.Caractéristiques :1, 4 + 1 mode de fonctionnement un seul potentiomètre et unique bouton interrupteur utilisé pour un fonctionnement2, option de mémoire EEPROM pour la
Éclairage par LED activé à l’aide de capteurs à effet Hall de porte

Éclairage par LED activé à l’aide de capteurs à effet Hall de porte

j'ai été sens à faire quelque chose de cool pour ma chambre d'étudiant cette prochaine session et a décidé que certains lumières placards personnalisés auraient fière allure. Dans ce Instructable, je vais vous montrer comment faire certains lumières
Spectromètre/LED array à l’aide de LED Charlieplexed

Spectromètre/LED array à l’aide de LED Charlieplexed

Dans ce instructable nous construire un tableau de LED qui peut ensuite être contrôlé avec un Arduino, ou n'importe quel autre AVR microcontroller, ou Raspberry Pi, ou ce que vous voulez. Simplement, nous construisons l'outil ici et vous pouvez l'app
Planche à roulettes avec microcontrôleur PIC et LED

Planche à roulettes avec microcontrôleur PIC et LED

ce que vous obtenez quand un ingénieur électricien génère une planche à roulettes à partir de zéro pour cadeau de Noël d'un âgé de 13 ans ? Vous obtenez une planche à roulettes avec 8 LEDs blanches (phares), huit diodes rouges (tailights) tous comman
Améliorer l’affichage de fibre optique avec LEDs et microcontrôleur.

Améliorer l’affichage de fibre optique avec LEDs et microcontrôleur.

Ce bonsaï belle fibre-optique était morte, l'alimentation n'était pas le cas à être trouvé, mais plus important, le moteur était mort. Il s'agissait d'un moteur à rotation lente qui n'est pas quelque chose que je peux trouver un remplacement facile p
INTERFAÇAGE d’une matrice de 8 X 8 points LED affichage avec un AT89C51 microcontrôleur

INTERFAÇAGE d’une matrice de 8 X 8 points LED affichage avec un AT89C51 microcontrôleur

Interfaçage sur un 8 x 8 matricielle peut être amusant et est facile à jouer avec, nous allons donc rentrer directement dedans !Étape 1: Vous aurez besoin :AT89C51 MICROCONTRÔLEURMATRICE 8 X 8UN CONSEIL DE DÉVELOPPEMENT OUMODULE DE MATRICE DE POINTSÉ