Je viens faire appel a vos lumiere pour un petit soussi de progammation d'une puce attiny.
Mon projet et de faire un petit module qui sera collé a l'interieur de ma porte de boite aux lettres pour m'indiquer via RF 433 la reception de courrier ou de colis grace a 2 capteurs et un bouton me permettra la RAZ du recepteur aprés collecte.
Le premier prototype était basé sur un digispark et fonctionnais ,mais voulant reduire la taille je l'ai refais en direct avec une puce attiny85.
maintenant ma led d'emission est constament allumé et en reception plus rien ne se passe.
/*TRUC DE B.A.L
* Emetteur RF 433Mhz pour boite aux lettres
* equipé de 2 capteurs pour volet (courrier)
* et pour porte (colis) et d'un bouton poussoir
* pour RAZ du recepteur.
* Le recepteur aura soit une led RGB pour indication
* colis , lettre ou attente ,soit un ecran 16*2.
*/
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
// emetteur connecté sur attiny85 Pin #0
mySwitch.enableTransmit(0);
//configuration des entrées
pinMode(2, INPUT_PULLUP);//reception de lettre
pinMode(3, INPUT_PULLUP);//reception de colis
pinMode(4, INPUT_PULLUP);//RAZ du recepteur
//configuration des sorties
pinMode(1, OUTPUT);//led emission
mySwitch.setRepeatTransmit(15);
}
void loop() {
//read the pushbutton value into a variable
int sensorVal = digitalRead(2);
int sensorVal2 = digitalRead(3);
int sensorVal3 = digitalRead(4);
if (sensorVal == HIGH) {
digitalWrite(1, LOW);
} else {
digitalWrite(1, HIGH);//allumage led
mySwitch.send(5, 24);//envoie signal
}
if (sensorVal2 == HIGH) {
digitalWrite(1, LOW);
} else {
digitalWrite(1, HIGH);//allumage led
mySwitch.send(9, 24);//envoie signal
}
if (sensorVal3 == LOW) {
digitalWrite(1, LOW);
} else {
digitalWrite(1, HIGH);//allumage led
mySwitch.send(7, 24);//envoie signal
}
}
elecrolab:
Le premier prototype était basé sur un digispark et fonctionnais ,mais voulant reduire la taille je l'ai refais en direct avec une puce attiny85.
maintenant ma led d'emission est constament allumé et en reception plus rien ne se passe.
je vous joint le code.
ave vous une idée?
Bonsoir
Le digispark embarque un bootloader micronucleus
un attiny85 est de base livré vierge
ton attiny85 (composant) tu le programme comment et tu injecte le .HEX avec quoi ?
Perso je joue de temps en temps en temps avec du digispark ou de l'attiny85
mais çà nécessite déjà d'avoir informé l'IDE des "paquets" concernant les cartes à utiliser
Basiquement:
-un digispark est uploadé au travers du bootloader micronucleus
un attiny est uploadé par ICSP
exemple pour moi en ce qui concerne ce que j'utilise sous le gestionnaire de cartes
Pour ce qui est te televerser le code dans l'attiny sa devrait etre bon , j'ai fais un teste blink avant pour controler .J'ai juste changer les pins sur mon programme car je comptais commander un circuit imprimé pour intègrer mes composants est la disposition ne m'arrangait pas.
Voici le code du digispark:
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
// Transmitter is connected to Arduino Pin #2
mySwitch.enableTransmit(2);
//configure pin 0 as an input and enable the internal pull-up resistor
pinMode(0, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(1, OUTPUT);
mySwitch.setRepeatTransmit(15);
}
void loop() {
//read the pushbutton value into a variable
int sensorVal = digitalRead(0);
int sensorVal2 = digitalRead(3);
int sensorVal3 = digitalRead(4);
if (sensorVal == HIGH) {
digitalWrite(1, LOW);
} else {
digitalWrite(1, HIGH);
mySwitch.send(5, 24);
}
if (sensorVal2 == HIGH) {
digitalWrite(1, LOW);
} else {
digitalWrite(1, HIGH);
mySwitch.send(9, 24);
}
if (sensorVal3 == LOW) {
digitalWrite(1, LOW);
} else {
digitalWrite(1, HIGH);
mySwitch.send(7, 24);
}
}
et mon branchement actuel (mis a part pour le regulateur ,pour les essais j'alimente en 5V avec un arduino)
Je vais essayer te televerser le code du digspark sur l attiny .
Par contre bizzarement sur digispark mon INPUT_PULLUP de la pin 4 fonctionne avec VCC contrairement aux pin 0 et 3.
En faite avec mon code j utilise 3 INPUT avec PULLUP pour mes 3 boutons.J'ai donc relié mes 3 boutons au GND et le bouton du pin 4 ne fonctionnais pas ,j'ai donc fais des recherches sur le site et il s'avère qu'il doit être relié au 5V,en tout cas pour le digispark , pour l'attiny seul je ne sais pas.
elecrolab:
En faite avec mon code j utilise 3 INPUT avec PULLUP pour mes 3 boutons.J'ai donc relié mes 3 boutons au GND et le bouton du pin 4 ne fonctionnais pas ,j'ai donc fais des recherches sur le site et il s'avère qu'il doit être relié au 5V,en tout cas pour le digispark , pour l'attiny seul je ne sais pas.
Je ne sais pas sur le digispark (il y a peut être un pulldown sur la carte), mais sur l'attiny85 si tu utilises INPUT_PULLUP les boutons doivent être connectés au gnd.
Bien sûr que la led est allumée dès le début, comme je te l'ai dit elle est allumée si le bouton RAZ n'est pas appuyé.
Le bouton RAZ ce n'est pas pour faire la RAZ?
Essaies le code que je t'ai suggéré.
Si le bouton RAZ est pour faire le RAZ ,mais tu recepteur ,ça c'est l'emetteur.
Regarde le code du recepteur :
[code
#include <RCSwitch.h>
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int reset = 3;
RCSwitch mySwitch = RCSwitch();
#define pressed1 9 //defines incoming data set by user which is transmitted
#define pressed2 5
#define pressed3 7
void setup() {
lcd.begin(16, 2);
lcd.print ("truc de bal");
mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2 pinMode(led,OUTPUT);
}
void loop()
{
unsigned long res = mySwitch.getReceivedValue();
switch (res){
case pressed1:
lcd.setCursor(0, 1);
lcd.print("courrier");
lcd.setCursor(12, 0);
lcd.print(millis() / 60000);
break;
case pressed2:
lcd.setCursor(10, 1);
lcd.print("colis");
lcd.setCursor(12, 0);
lcd.print(millis() / 60000);
break;
case pressed3:
pinMode(3,OUTPUT);
lcd.print(millis() / 1);
break;
}
}]
le RAZ active la case pressed3!
Mais je vais essayer ton cod ,même si je ne comprend pas pourkoi il fonctionne bien sur digispark.
kamill:
Moi non plus je ne comprend pas pourquoi ça fonctionne sur le digispark, mais je comprend pourquoi ça ne fonctionne pas sur l'attiny85.
Bonsoir
Dans la mesure où , on ne sais toujours pas comment est compilé et uploadé l'attiny
c'est difficile de faire autre chose que des suppositions
Quelle horloge est utilisée pour l'attiny ?
Ce serai bien d'avoir des reponses aux questions que j'ai posée en #4
Artouste:
Bonsoir
Dans la mesure où , on ne sais toujours pas comment est compilé et uploadé l'attiny
c'est difficile de faire autre chose que des suppositions
Quelle horloge est utilisée pour l'attiny ?
Ce serai bien d'avoir des reponses aux questions que j'ai posée en #4
bonjour,
Pour verser le programme j ai utiliser un arduino avec son IDE que j ai règler pour ATtiny85 en type de carte , clock internal 8Mhz internal et programmateur arduino as ISP.
Etant une bille en programmation ,j'espère avoir répondu aux questions?