Étape 4: Code, modification des couleurs et tactile capacitif
J’ai utilisé une bande de LED non adressable pour ma table.
Avec l’aide de mon maître et TA, j’ai été capable de combiner quelques différentes ressources pour rendre un code qui travaille spécifiquement pour les besoins de ma table.
CODE
Broches de la LED
int LEDPin = 13 ;
déclencheur d’int = 0 ;
int r, g, b ;
Code PIN pour vous connecter à votre dessin
int capSensePin = 2 ;
C’est à quelle hauteur le capteur a besoin de lire dans l’ordre
pour déclencher une touche. Vous trouverez ce numéro
par essais et erreurs, ou vous pourriez prendre des lectures à
le début du programme calculer dynamiquement.
int touchedCutoff = 20 ;
#define REDPIN 5
#define GREENPIN 6
#define BLUEPIN 3
#define FADESPEED 5
void setup() {}
Serial.Begin(9600) ;
Mettre en place la LED
pinMode (LEDPin, sortie) ;
digitalWrite (LEDPin, basse) ;
pinMode (REDPIN, sortie) ;
pinMode (GREENPIN, sortie) ;
pinMode (BLUEPIN, sortie) ;
}
void loop() {}
Si le capteur capacitif mesure dépassant un certain seuil,
allumer la LED
Si (readCapacitivePin(capSensePin) > touchedCutoff) {}
digitalWrite (LEDPin, élevé) ;
}
else {}
digitalWrite (LEDPin, basse) ;
}
Toutes les 500 ms, imprimer la valeur du capteur capacitif
Si ((millis() % 500) == 0) {}
Serial.Print ("capteur capacitif sur broche 2 se lit:") ;
Serial.println(readCapacitivePin(capSensePin)) ;
Serial.println(Trigger) ;
}
Si (readCapacitivePin(capSensePin) > = 250) {//sensitivity
gâchette ++ ;
Si (déclencheur > 5) {}
déclencheur = 0 ;
}
Switch(Trigger) {//these sont les systèmes d’éclairage
case 0 :
digitalWrite(REDPIN,255) ;
digitalWrite(GREENPIN,255) ;
digitalWrite(BLUEPIN,255) ;
rupture ;
cas 1 :
digitalWrite(REDPIN,0) ;
digitalWrite(GREENPIN,255) ;
digitalWrite(BLUEPIN,0) ;
rupture ;
cas 2 :
digitalWrite(REDPIN,0) ;
digitalWrite(GREENPIN,255) ;
digitalWrite(BLUEPIN,255) ;
rupture ;
cas 3 :
digitalWrite(REDPIN,255) ;
digitalWrite(GREENPIN,0) ;
digitalWrite(BLUEPIN,255) ;
rupture ;
cas 4 :
digitalWrite(REDPIN,0) ;
digitalWrite(GREENPIN,0) ;
digitalWrite(BLUEPIN,0) ;
rupture ;
}
}
}
readCapacitivePin
D’entrée : Numéro d’identification Arduino
Sortie : Un nombre, de 0 à 17 exprimant
Combien capacitance est sur la broche
Quand vous touchez la broche, ou ce que vous avez
attaché à elle, le nombre obtiendrez plus élevé
Afin que cela fonctionne maintenant,
Le code pin doit avoir un + 1 Megaohm résistance traction
Il place à + 5v.
uint8_t readCapacitivePin (int pinToMeasure) {}
C’est comment vous déclarez une variable qui
tiendra les registres PORT PIN et DDR
sur un AVR
volatils uint8_t * port ;
volatils uint8_t * ddr ;
volatils uint8_t * tige ;
Ici nous traduisons le nombre de broches d’entrée de
Arduino code PIN au PORT d’AVR, broches, DDR,
et que peu de ces registres, nous nous soucions.
masque de bits octets ;
Si ((pinToMeasure > = 0) & & (pinToMeasure < = 7)) {}
port = & PORTD ;
DDR = & DDDR ;
masque de bits = 1 << pinToMeasure ;
pin = & PIND ;
}
Si ((pinToMeasure > 7) & & (pinToMeasure < = 13)) {}
port = & PORTB ;
DDR = & DDRB ;
masque de bits = 1 << (pinToMeasure - 8) ;
pin = & PINB ;
}
Si ((pinToMeasure > 13) & & (pinToMeasure < = 19)) {}
port = & PORTC ;
DDR = & DDRC ;
masque de bits = 1 << (pinToMeasure - 13) ;
pin = & PINC ;
}
Décharger la broche tout d’abord en lui affectant faible et de sortie
* port & = ~ (masque) ;
* ddr | = masque de bits ;
Delay(1) ;
Faire de la broche une entrée sans le pull-up interne sur
* ddr & = ~ (masque) ;
Voyons maintenant combien de temps la goupille pour obtenir tiré vers le haut
cycles d’int = 16000 ;
pour (int i = 0; i < cycles; i ++) {}
Si (* NIP & masque de bits) {}
cycles = i ;
rupture ;
}
}
Décharger la goupille à nouveau en lui affectant faible et de sortie
Il est important de laisser les broches faible si vous voulez
être en mesure de toucher plus de 1 capteur à la fois - si
le capteur est laissé tiré haut, quand vous touchez
deux capteurs, votre corps va transférer la charge entre les
capteurs.
* port & = ~ (masque) ;
* ddr | = masque de bits ;
retour cycles ;
}