Introductie
Hoeveel keer hebt u gehoord van een lied - op de radio, tijdens een film of een concert - en dacht dat "Man ik wou dat ik kon spelen dat"? Nu u kunt! Dit project kunt u om te leren een liedje noot door noot op de piano door verlichting van de juiste ledverlichting die overeenkomen met elke afzonderlijke toets op de piano. In feite, zelfs als u niet een piano hoeft maar een kleinere electronische toetsenbord hebben, kunt u het daarvoor. Sommige elektronische toetsenborden heb eigenlijk licht-up sleutels voor slechts dit doel, maar doet het op een echte piano is zo veel meer voldoening. Veel plezier, en sommige nummers leren!
De drie hoofdonderdelen van dit project (zoals velen) zijn:
1) software
2) hardware (niet-elektronisch)
3) elektronica en bedrading
Hoewel ze afzonderlijke delen van het project, in werkelijkheid u zal vaak werken aan meer dan één filter tegelijk gewoon omdat hoe u besluit om een deel te doen is van invloed op hoe doe je een andere. Een goed ding over doen ze in parallel, echter is dat je het grote beeld in gedachten als je moe van het schrijven van code, kunt u uw acryl onderdelen ontwerpen, en als je moe van de computer bent helemaal kunt kabellengte tot sommige weerstanden en LEDs en eens wat leuks mee. De onderdelen zijn in een bepaalde volgorde in de Instructable, maar hoe je dat het is aan jou.
Conceptueel overzicht
De grootste vraag toen ik begon was "hoe de heck u individueel Bepaal 88 LEDs?!?!" Gelukkig, na wat onderzoek vond ik wat chips ontworpen om te doen enkel dat en enkele Arduino tutorials en code die geholpen langs de weg. Afgezien van die vraag, alles was vrij eenvoudig of ten minste alleen vereist mij te kiezen uit verschillende opties - wat te maken van de strip uit, hoe te houden van de LED's op hun plaats, hoe te schrijven van de code om het te maken alle uitvoeren, enzovoort. Laten we praten over de grote vraag is een beetje meer grondig, dus heb je een idee van hoe het allemaal werkt voordat u aan de slag.
De chips die ik heb zijn LED-matrix (of 7 segment display) bestuurders, hetgeen betekent dat wat betreft de chip is, wij moeten onze LEDs wired alsof ze in een vierkante raster met een bepaald aantal rijen en kolommen - de positieve terminals gebruikelijk in elke kolom zijn en de negatieve terminals gebruikelijk in elke rij zijn. Dit maakt van 64 LEDs (in een 8 x 8 raster) te worden gecontroleerd door elke chip en vereist slechts drie (thats rechts drie!!!) controle ingangen. Ongeacht welke of hoeveel van de LED's die u inschakelen wilt, kan het systeem het behandelen.
Maar wacht, als u wilt inschakelen van LEDs (1,1) en (2,2), niet zou dat ook oplichten (1,2) en (2,1), omdat met het oog op het oorspronkelijke doel alle rijen 1-2 en 1-2 kolommen worden moeten zou op? Dit is waar de klok binnen de chip komt in de LED's zijn niet daadwerkelijk op continu. Integendeel, zij bent zo snel dat het menselijk oog merkt ze zo voortdurend op knippert. Dit is hoe ongewenste LEDs kunnen blijven uit!
Dus hoewel we de strip als enkel een lijn van LEDs, ze alsof ze in twee vierkante matrices - een 8 x 8 bent wired (eerste chip) en een 5 x 5 (tweede chip), die tot 89 sleutels (de finale "rij" van de 5 x 5 matrix heeft alleen 4 LEDs, dus dat ons tot 88 brengt) toevoegd. Voila!
Hoe we vertellen de chip die LEDs te verlichten? Dat heeft alles met behulp van binaire getallen. Met behulp van sommige code geleend van ontwikkelaars online (Zie de code voor de Naamsvermelding), ik heb het programma op zodanige wijze dat alles wat je hoeft te doen bij het vertalen van een lied is Bel de opdracht playKey(...). Dit speelt de gegeven genummerde sleutel, beginnend met 1 aan de linkerkant en eindigend met 88 aan de rechterkant. Met deze opdracht de key nummer neemt en vertaalt dit zodat de chips hun plicht te doen kunnen door het volgende te doen: het belangrijkste getal wordt omgezet in een rij en kolom nummer, die vervolgens wordt omgezet in een rijnummer en een binaire getal dat aangeeft welke LED moet op (lees van links, niet het recht). Bijvoorbeeld, als ik bel playKey(13), die A is, vertalen de functies dat als rij 2, kolom 5; vervolgens sinds 2 ^ 5 is 32, dat zou het nummer dat naar de chip gaat. Lezen van de links, is 32 00000100, die de status voorstelt van de tweede rij. Hetzelfde concept is van toepassing wanneer we omgaan met verlichting van meerdere LEDs - it's all about binaire getallen! Bekijk de code voor de exacte functies en een beetje meer uitleg.
Tenslotte is er een potentiometer die eraan verbonden zijn alle controle tempo - iets echt, echt belangrijk als je geen idee hebt wat je doet...
Opmerking: Dit was niet een eenvoudige Instructable te schrijven vanwege hoe ingewikkeld het was om alles samen te stellen en maakt het allemaal werk. Aarzel niet mij te laten weten als er iets verwarrend of onduidelijk is, of als u specifieke vragen hebt!
Laten we de slag te gaan!