MIDI Piano Lighting (8 / 11 stap)

Stap 8: Software: Timers en Interrupts


Ik weet niet wat foto's te plaatsen voor het verklaren van de software, dus, natuurlijk, waarschijnlijk beter gewoon post een foto met een kat. Ook is de volledige arduino code beschikbaar aan download hierboven. (lbdOrganPWM.ino)

Timers en Interrupts

Om te kunnen gebruiken de hardware PWM in volgorde met de lijn van de ac triggering, alles wat we moeten doen is ervoor te zorgen de teller die wordt gebruikt voor de uitvoer van de PWM-waarde wordt teruggezet op de nul-kruising van de wisselstroom van de lijn. Met de activerende circuit uitgelegd in stap 7, hechten wij een hardware-interrupt aan deze pin te resetten van de tellers als er wordt gegenereerd.

Elke timer wordt geïnitialiseerd aan het begin van het programma naar de golfvorm generatie modus voor snel PWM mode met ICRn als de hoogste waarde. Deze timer-modus is wat maakt gebruik van de hardware PWM mogelijk.

Aangezien we 7-bits resolutie in de snelheid van de MIDI-notitie hebben, willen we om vrij dicht bij deze resolutie voor de intensiteit van de gloeilamp. Eerlijk gezegd, iets meer dan 16 stappen is vrij te verwaarlozen, maar aangezien we kunnen we net zo goed. Dus als we de prescaler van de timers ingesteld op 1024 (pag. 161 van Atmega2560 gegevensblad), dan we 16 Mhz hebben / 1024 voor onze klok timer = 15625 Hz. De frequentie van ons doel van onze totale PWM golfvorm is 120Hz, overeenkomen met de halve cyclus van de spanning van de lijn 60Hz. We verdelen dus, 15626/120 om ~ 130. Dat betekent dat als wij onze ICRn register to130 ingesteld, zullen we een frequentie die overeenkomen met de frequentie van de lijn met ~ 130 stappen. Dat is perfect aangezien we hebben 128 stappen in de MIDI-snelheid!

Er is enige variatie in de frequentie van lijn na het proberen van dit uit, en dus uiteindelijk heb ik met behulp van een hoogste waarde (ICRn) van 122. Dit leek me een veilig genoeg waarde waar ik zou ervoor dat mij zou zwenking vandoor naar de triac op de nul-cross. Als je te ver voorbij de drempel van de nul-cross, je missen en het licht nooit worden uitgeschakeld of worden gedimd.

Laatste ding, over de Timer-config is de polariteit van de PWM. Omdat zodra de timer wordt tot aan het eindpunt wij willen zorg ervoor dat de triac wordt uitgeschakeld (dit betekent dat we dicht bij de nul-cross zijn), we moeten gebruiken de omgekeerde-modus van de PWM-pin, zo dat wanneer de Timer = 0, de pin is laag. Dat gewoon betekent dat wanneer we de waarde van een snelheid van 100, we willen het PWM-register ingesteld op 127-100 = 27.

Voor de behandeling van de nul-cross, heeft de arduino bibliotheek een ingebouwde functie voor dit met behulp van de hardware-interrupts:

 attachInterrupt(5,zeroCrossDetect,FALLING); 

Waarbij 5 is de interrupt-nummer (pin 18 op de Mega), vallende aangeeft het is alleen geactiveerd op de dalende rand (1 -> 0, niet 0 -> 1) van de interrupt-pin, en zeroCrossDetect is de functie hieronder.

Het werkt door het instellen van alle tellers die door de specifieke PWM pinnen die ik besloten heb te nul aan het nul Kruis wordt gebruikt. Het stelt ook de prescaler en wave-form generatie modus voor elke timer, de reden hiervoor is dat de timer begint op de AC-cyclus aan het begin van het programma, om ervoor te zorgen er geen offset vanaf het begin.

 void zeroCrossDetect() { TCNT1 = 0; TCNT3 = 0; TCNT4 = 0; TCNT5 = 0; TCCR1B = (1<<WGM12) | (1<<WGM13) | (1<<CS10) | (1<<CS12); TCCR3B = (1<<WGM32) | (1<<WGM33) | (1<<CS30) | (1<<CS32); TCCR4B = (1<<WGM42) | (1<<WGM43) | (1<<CS40) | (1<<CS42); TCCR5B = (1<<WGM52) | (1<<WGM53) | (1<<CS50) | (1<<CS52); } 

Gerelateerde Artikelen

Wortel Piano (A MaKey MaKey Project)

Wortel Piano (A MaKey MaKey Project)

heb je ooit gedacht dat een wortel zo'n goed geluid kunt maken? Ze kunnen met behulp van een MaKey MaKey. Maar enkel het hebben van een paar sleutels niet goed genoeg, we gaan bouwen waarvan 18 toetsen en 2 volledige octaaf kunnen zijn.Stap 1: materi
Inleiding tot de MaxMSP

Inleiding tot de MaxMSP

MaxMSP is een visuele programmeertaal waarmee u kunt bouwen van complexe, interactieve programma's zonder enige voorafgaande ervaring schrijven van code.  MaxMSP is vooral handig voor gebouw audio, MIDI, video en grafische toepassingen waar gebruiker
Arduino afstandsbediening verlichting met universele Remote

Arduino afstandsbediening verlichting met universele Remote

ik ben al op zoek naar domotica voor enige tijd, maar nog niet toegewezen enkel nog vooral vanwege het prijskaartje. Vorig jaar (2010) kocht ik deze afstandsbediening outlet aan/uit schakelaars, dus ik kon mijn boom Kerstverlichting aan en uit via af
Laten we vermaken

Laten we vermaken

in dit instructable, zullen we een robot-aap die de piano aan entratain mensen in kinderen partijen, restaurants, etc bespeelt, het is een erg leuk project die u kunt maken met aboute $500 en een stuk van de grote entertainment zal maken.Stap 1: mate
Hoe een aanhangwagen draad

Hoe een aanhangwagen draad

Terwijl ik deze oude boot trailer in een hulpprogramma aanhangwagen omzetten was, merkte ik dat ik nodig had om de opnieuw de lichten omdat de oude gebarsten en niet-functionele waren. Ik begon met het krijgen van een aanhangwagen licht kit bij Tract
Audio massage meubilair

Audio massage meubilair

deze meubelen is prototyped voor 2 hoofdfuncties:1 - Lees- en schrijfvensters luisteren naar elektronische muziek terwijl legde rechtstreeks op de luidspreker2-meubels geven een volledige massage met audio bestanden gesynchroniseerdStap 1: tekening h
Gevoelige Piano - 88 toetsen Bluetooth-MIDI. Op zoek naar fondsen.

Gevoelige Piano - 88 toetsen Bluetooth-MIDI. Op zoek naar fondsen.

HalloNadat gefrustreerd met mijn 5 octaaf-piano, probeert te spelen meer veeleisende scores van 6 octaven. Ik besloot om te bouwen tot ongeveer 7 octaven, MIDI door, bluetooch op de PC horen te. Mijn idee is om te kijken van financiering, dankzij uw
Aangepaste Arduino MIDI Controller

Aangepaste Arduino MIDI Controller

Hallo, en welkom op dit instructable over het bouwen van een aangepaste, goedkoop en makkelijk USB MIDI-controller, gebaseerd op de Arduino. Het beste nieuws: geen gedoe met USB-naar-MIDI interfaces of softwaretools zoals Haarloze MIDI, gewoon plug '
MIDI-handschoen met behulp van de Arduino en lichtsensoren drummen

MIDI-handschoen met behulp van de Arduino en lichtsensoren drummen

ik zal beschrijven een leuke en gemakkelijke manier om uw eigen geluid expressie opbouwt MIDI ingeschakeld handschoen gebruikten veel van geld op MIDI Interfaces of dure sensoren zonder.Voel je vrij om contact met mij direct per mail als u suggesties
MIDI controle licht Arduino

MIDI controle licht Arduino

Hallo, is deze post gemaakt door Jesus Alberto Cejas en Pablo Javier Ruiz te tonen u ons Project over een muzikale toetsenbord, mooie lichten en Arduino.Dit project was voor 'Creatieve Electronics', een Beng elektronica Engineering 4e jaar module op
Wat is MIDI?

Wat is MIDI?

MIDI (Musical Instrument Digital Interface) is een protocol dat is ontworpen in de 1980's waarmee elektronische instrumenten en andere digitale muzikale middelen om te communiceren met elkaar.  MIDI zelf maakt geen geluid, het is gewoon een reeks van
Maak uw eigen goedkope USB MIDI-Controller of toetsenbord

Maak uw eigen goedkope USB MIDI-Controller of toetsenbord

Ik was op zoek naar een USB MIDI controller-apparaat (of interface) voor muziek toepassingen zoals piano of orgel toetsenbord of pedalboard. Na wat onderzoek wilde ik gaan naar een meer "zelfgemaakte" oplossing. Mijn keuze is tenslotte gericht o
Zelfgemaakte MPC-stijl MIDI controller

Zelfgemaakte MPC-stijl MIDI controller

1.0 INLEIDINGIk besloot om te bouwen en ontwerpen van een midi-controller die wordt gebruikt om opdrachten te verzenden naar een computer met een DAW (digital audio workstation) om te controleren van verschillende parameters binnen het. De DAW ik geb
Sugarcube MIDI Controller

Sugarcube MIDI Controller

Dit project is een draagbare, Arduino aangedreven, grid-gebaseerde MIDI controller die zelfstart opwaarts in allerlei apps te doen veel dingen met geluid. Het heeft 16 verlichte knoppen, gebruikt als zowel in- en uitgangen te geven van de controller