Étape 3: Programmer votre puce Standalone
Vous êtes fait pour enlever la puce de la carte arduino est parce que lorsque la programmation TX/RX commence, la puce arduino se réinitialise. Ce reset desynchronizes la puce autonome de la carte de programmation, qui entraîne un échec de téléchargement. Le travail est simple.
Une puce autonome de programmation
1) fil de la puce autonome, conformément à la dernière étape.
2) fixer un condensateur 20uF entre la broche RESET et GND sur la carte Arduino. Assurez-vous que la jambe positive du condensateur est connectée à la broche de remise à zéro et la jambe négative est reliée à une broche de terre. Cette étape empêche l’arduino réinitialisation pendant le processus de téléchargement.
3) Assurez-vous que LilyPad arduino w / atmega 168 est sélectionnée sous Outils > Conseil d’administration. Faire sûr Arduino ISP est sélectionnée sous Outils > programmeur.
4) copiez et collez le code de l’arduino dans l’IDE Arduino
5) cliquez sur fichier > Télécharger à l’aide du programmeur.
6) croisez les doigts et prier pour le montage d’essai dieux que vous n’avez pas un fil lâche.
7) danse avec jubilation parce que vous avez maintenant une puce d’atmega autonome programmée pour faire ce que vous voulez qu’il fasse.
J’ai utilisé l’exemple de capsense figurant dans les bibliothèques de l’arduino et modifié pour répondre aux fonctions tactiles multiples. J’ai inclus fade, parce que je n’aime pas les changements de luminosité soudaine (et il semble beaucoup plus frais)
//Just Le CODEcopie et coller.
octet LEDPin = 11 ; Broche de sortie PWM pour LED
capSensePin octets = 2 ; Broche pour fixer à un capteur capacitif
mode octets = 0 ; Détermine la luminosité de la LED. 0 est éteint. Varie entre 0 et 255.
touchThreshold octets = 100 ; Valeur minimale tactile capacitif pour déclencher le mode suivant
targetBrightness octets = 0 ; Puissance réglée sur la luminosité
currentBrightness octets = 0 ; variable de comparer la luminosité
void setup() {}
Serial.Begin(9600) ;
pinMode (LEDPin, sortie) ; Mode de sortie la valeur LEDPin
}
void loop() {}
Si (readCapacitivePin(capSensePin) > touchThreshold) {//If la valeur de capSensePin est supérieure à touchThreshold puis faire...
Delay(250) ;
Bouton Debounce. Comment supprimerait cette rupture à l’aide de millis()??
mode ++ ; Si le seuil ci-dessus est dépassé, puis augmentez la valeur de mode par 1
Cette section suivante décrit les différents niveaux de luminosité des LED. 255 est complètement un. 128 est demi luminosité.
Si mode (mode > 3) = 0 ; Si la valeur de mode est > 3 puis la valeur valeur mode 0.
Si (mode == 0) targetBrightness = 0 ;
Si (mode == 1) targetBrightness = 255 ;
Si (mode == 2) targetBrightness = 128 ;
Si (mode == 3) targetBrightness = 64 ;
Serial.Print ("le mode actif est...") ; Serial monitor bebug mode augmente
Serial.println(mode) ; imprimer la valeur de mode de moniteur seial
}
Contrôle de fondu
Si (targetBrightness > currentBrightness) currentBrightness ++ ;
Si (targetBrightness < currentBrightness) currentBrightness--;
analogWrite (LEDPin, currentBrightness) ;
Delay(3) ; détermine comment rapidement la décoloration se produit.
Serial.println(currentBrightness) ;
CE MOMENT JE N’ÉCRIVAIS PAS.
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)) ;
}
}
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 ;
}