COI - Beat Keeper (3 / 4 étapes)

Étape 3: Programmation/Code

Télécharger le fichier à la fin de l’instructable, ou copiez le code suivant dans votre Arduino-Intel IDE (Integrated Development Environment). Télécharger le code au Conseil d’Edison. Notez qu’il y a plusieurs paramètres personnalisables, figurant dans le code, surtout une chaîne appelée beat avec des lettres qui représentent les capteurs pour être déclenché sur le beat et un unitsPerBeat qui indique le nombre de caractères vont dans un rythme unique.

 #include<br> 
 #include 
 #include 
 rgb_lcd lcd; 
 #define S_SENS A3 
 #define T_SENS 8 
 #define ROT_SENS A0 
 int yellowPinNum = 3; 
 int greenPinNum = 5; 
 int redPinNum = 6; 
 int thresholdSound = 400; //Out of 1024 
 //minTime and maxTime can be customized. 
 int minTime = 250;//Corresponds to 240 bpm 
 int maxTime = 1000;//Corresponds to 60 bpm 
 int beatTime = maxTime; 
 long long lastMillis = 0; 
 double score = 1.0; //This is a value kept between 0 and 1 which is affected by your most recent performance. 
 double memoryPersistance = .8; //This value is customizable and should be between 0 and 1; 
 char touchCode = 'T'; 
 char soundCode = 'S'; 
 char bothCode = 'B'; 
 char silentCode = '-'; 
 String beat = "S-T-T-T-"; //This is customizable to produce a new beat. Beats can be of arbitrary length. 
 int unitsPerBeat = 2; //Customizable, is the number of characters in beat per "beat" 
 int beatIndex = 0; 
 boolean touchedLastTime = false; 
 boolean soundLastTime = false; 
 boolean scoreIntegrated = false; 
 void setup() { 
 // Make Sure to Initialize the Pins for Output: 
 pinMode(yellowPinNum, OUTPUT); 
 pinMode(greenPinNum, OUTPUT); 
 pinMode(redPinNum, OUTPUT); 
 //Set up LCD screen 
 lcd.begin(16,2); 
 lcd.setRGB(255,255,255); 
 // Set the pinMode of the inputs 
 pinMode(S_SENS, INPUT); 
 pinMode(T_SENS, INPUT); 
 pinMode(ROT_SENS, INPUT); 
 //Safety: 
 unitsPerBeat = max(unitsPerBeat, 1); 
 } 
 void loop() { 
 //Check for a beat rollover 
 boolean rollOver = false; 
 if(millis()-lastMillis > beatTime){ 
 lastMillis = lastMillis + beatTime; 
 rollOver = true; 
 beatIndex = (beatIndex + 1)%beat.length(); 
 } 
 if(millis() < lastMillis){ 
 lastMillis = millis(); 
 rollOver = true; 
 beatIndex = (beatIndex + 1)%beat.length(); 
 } 
 //Read speed preference and display on LCD. 
 if(rollOver){ 
 beatTime = minTime+(int)(analogRead(ROT_SENS)/1024.0 * (maxTime-minTime)); 
 double bpm = 60.0*1000.0/beatTime; 
 lcd.setCursor(0,0); 
 lcd.print(" ");//Clear Screen 
 lcd.setCursor(0,1); 
 lcd.print(" "); 
 lcd.setCursor(0,0); 
 lcd.print("BPM: "); 
 lcd.print(bpm); 
 beatTime = beatTime/unitsPerBeat; 
 } 
 //Check to see if in first quarter. If so, turn on appropriate LED's, and check for touches. 
 if(millis()-lastMillis < beatTime/3){ 
 scoreIntegrated = false; //Means soundLastTime, touchedLastTime have potentially new values; 
 if(beatIndex == 0){ 
 analogWrite(yellowPinNum, 0); //Full brightness on first beat. 
 } 
 else if (beatIndex%unitsPerBeat==0){ 
 analogWrite(yellowPinNum, 200); //Lower Brightness. 
 }//End if is first beat 
 if(beat[beatIndex]==touchCode || beat[beatIndex] == bothCode){ 
 analogWrite(greenPinNum, 0); 
 } 
 if(beat[beatIndex]==soundCode || beat[beatIndex]==bothCode){ 
 analogWrite(redPinNum, 0); 
 } 
 if(digitalRead(T_SENS)==1){ 
 touchedLastTime=true; 
 } 
 if(analogRead(S_SENS)>thresholdSound){ 
 soundLastTime=true; 
 } 
 } 
 else if(millis()-lastMillis > (beatTime * 2)/3){ 
 scoreIntegrated = false; //Means soundLastTime, touchedLastTime have potentially new values; 
 if(digitalRead(T_SENS)==1){ 
 touchedLastTime=true; 
 } 
 if(analogRead(S_SENS)>thresholdSound){ 
 soundLastTime=true; 
 } 
 } 
 else{ 
 analogWrite(yellowPinNum, 255);//Inverted for some reason. 
 analogWrite(greenPinNum, 255); 
 analogWrite(redPinNum, 255); 
 if(scoreIntegrated == false){ 
 double correctness = 0; 
 if(beat[beatIndex]==bothCode && touchedLastTime && soundLastTime){ 
 correctness=1; 
 } 
 else if(beat[beatIndex]==touchCode && touchedLastTime && !soundLastTime){ 
 correctness=1; 
 } 
 else if(beat[beatIndex]==soundCode && !touchedLastTime && soundLastTime){ 
 correctness=1; 
 } 
 else if(beat[beatIndex]==silentCode && !touchedLastTime && !soundLastTime){ 
 correctness=score; 
 } 
 score = score * memoryPersistance + correctness*(1-memoryPersistance); 
 lcd.setRGB((int)(255*(1-score)),(int)(255 * score),0); 
 lcd.setCursor(0,1); 
 lcd.print((int)(score*100)); 
 lcd.print("%"); 
 scoreIntegrated = true; 
 touchedLastTime=false; 
 soundLastTime=false; 
 } 
 } 
 } 

Articles Liés

Beats by Triple un casque bricolage G (Alex et Arian)

Beats by Triple un casque bricolage G (Alex et Arian)

Créé par Alex Garcia et Adeli arienneÉtape 1: Votre matérielAcheter tout le matériel nécessaire pour compléter le casqueVous pourrez trouver tous les matériaux sur amazon.comEtape 2: La bobineObtenez 2 mètres de fil de calibre 28Puis envelopper un ca
Préservatif Keeper calendrier

Préservatif Keeper calendrier

quoi calendriers et épouses ont en commun ?  Réponse : ils ont tous deux beaucoup de dates.  Au moins ils ont mieux si vous voulez qu'ils soient heureux !Je suis un homme.  Ordonnancement temps avec ma femme n'est pas quelque chose qui est tout natur
Comment faire un 90 s Hip Hop Beat

Comment faire un 90 s Hip Hop Beat

Salut tout le mondeJe suis 90sflav, je vous expliquerai la base de l'échantillon et beatmaking afin de créer un simple hip hop beat.Pour ce faire, les besoins sont relatifs. Vous pouvez le faire avec un Akai MPC, un patron SP-x0x... ou avec un DAW (F
Tic Tac Tunes - maintenant avec Tic Tac Beat Box

Tic Tac Tunes - maintenant avec Tic Tac Beat Box

Micro-orgue et kit de batterie dans une boîte de Tic TacCette petite boîte vous donnera des heures de plaisir de composer vos propres chansons. Vous pouvez varier le tempo du morceau et passer d'une échelle pentatonique et blues comme produisant une
Steampunked Heart-Beat-Box

Steampunked Heart-Beat-Box

Bonjour tout le mondeJe ne m'attendais à un tel intérêt énorme de mon travail. Mais je dois dire que je l'aime.  Ce succès est une grande motivation pour moi et je tiens donc à vous montrer un autre objet de steampunk drôle. où j'ai utilisé un des me
Comment faire quelqu'un regarde Beat-up

Comment faire quelqu'un regarde Beat-up

Hey tout le monde et Bienvenue sur le blog technique de Indy Mogul épisode #12 (beat-up). Il s'agit d'une version assez facile par rapport à l'armure de samouraï de la semaine dernière. Vous pouvez mélanger et assortir ces techniques pour créer l'eff
Mettre à niveau un batteur à oeufs simple dans un film de science-fiction Egg Beater !

Mettre à niveau un batteur à oeufs simple dans un film de science-fiction Egg Beater !

Tired of your old fashioned egg beater? Trop simple ou trop mainstream pour vous ? Ne pas jeter à la poubelle. Niveau vers un fantastique science-fiction Egg Beater, à l'aide d'un grand bol, un jouet endommagé, certains déchets électroniques et un ba
Vidéo Beats : Visualiseur de musique

Vidéo Beats : Visualiseur de musique

vidéo bat est un visualiseur de musique de matériel en fonction - il génère une visualisation basée sur la musique vous nourrir et l'afficher sur n'importe quel téléviseur standard.  Voici une petite démo (passez à 27 secondes pour voir la visualisat
Easy Torn/Frayed Dr. Dre Beats cordon Fix

Easy Torn/Frayed Dr. Dre Beats cordon Fix

cela vous montre comment réparer votre déchiré Dr Dre Beats cordon avec fournitures de maison ordinaire !Étape 1: Les fournitures Les fournitures seulement vous avez besoin sont des ciseaux et peu de ruban électrique.Etape 2: Fixer Commencer par coup
« Beat It » en vidéo de guitare

« Beat It » en vidéo de guitare

ici, c'est moi jouer à Beat It de Michael Jackson sur ym Fender Squier Telecaster. Dans un autre instructable je montre comment le faire en tablature.
Facile de Michael Jackson à la guitare: « Beat It »

Facile de Michael Jackson à la guitare: « Beat It »

Michael Jackson était un peu bizarre, mais ne sommes-nous pas tous ? J'aime quelques-unes de ses chansons. J'ai aussi fait une instructable sur comment jouer à "Smooth Criminal" (un autre de ses chansons.) Beat c'est assez facile. Vous avez just
Fabrication de Beats frais avec cinq Nintendo Gameboys par 8BITches

Fabrication de Beats frais avec cinq Nintendo Gameboys par 8BITches

8 BIT Che de 8BITches, la bande de saut de puce du Maine, explique comment il fabrique ses Beats chaud sur Nintendo Gameboys.
Keeping Up Appearances avec Chindogu

Keeping Up Appearances avec Chindogu

Ah oui... Chindogu. J'ai entendu, vu et lu de nombreuses idées comme ça en fait, que j'ai même lu un livre sur elle. Idées de chindogu sont ceux qui vous font rire, assurez-vous que vous allez fou et la plus folle solution à des problèmes simples nou
Train KISS (Keep It Super Simple)

Train KISS (Keep It Super Simple)

Construisez vous-même un jouet amusant, durable pour presque sans frais ! Utilisez un morceau de 2 x 4, vous pourriez en bois de palette.J'ai conçu ce train dans le début des années 80 quand j'ai eu 2 garçons, 2 & 3 ans. Mon budget était limité ainsi