Bonjour,
Il s'agit d'un progamme pour commande de 2 relais par ATtiny85 et 1 voie de radiocommande modélisme (ancienne en 72Mhz).
La sortie 4 fonctionne de manière aléatoire non fuide.
Je souhaite aussi que les 2 sorties relais soient inactive si la radiocommande est à l'arrêt.
//============ Commande de 2 relais sur 1 voie radio impulsion et maintenue ==========
//===================================== Attiny 85 ===================================
//================ Manche au neutre ==> SORTIE 3 (OFF) et SORTIE 4 (OFF) =============
//============ Manche en haut ==> SORTIE 3 (ON impulsion) et SORTIE 4 (OFF) ==========
//======== Manche en bas 1 fois ==> SORTIE 3 (OFF) et SORTIE 4 (ON maintenue) =======
//============ Manche en bas 1 fois ==> SORTIE 3 (OFF) et SORTIE 4 (OFF) ============
//============== Coupure signal radio ==> SORTIE 3 (OFF) et SORTIE 4 (OFF) ==========
//====================================================================================
int signal = 2; // Déclare le signal récepteur sur le pin 2
int val1; // Valeur du signal récepteur
int etat1;
int etat2;
int cpt; #define signal 2 #include <SoftwareSerial.h>
//====================================================================================
void setup(){
pinMode(signal, INPUT); // Déclare signal comme une entrée
pinMode(3, OUTPUT); // Déclare le pin 3 (sortie 3) en sortie
pinMode(4, OUTPUT); // Déclare le pin 4 (sortie 4) en sortie
}
//====================================================================================
void loop(){
val1 = pulseIn(signal, HIGH);
if (val1 > 10000 && val1 < 13000)
{
etat1=0;
etat2=!etat2 ;
}
//==================================================================================
if (val1 > 13000 && etat1 == 0)
{
digitalWrite(4, HIGH); // Active sortie 4
delay(5000);
digitalWrite(4, LOW); // Désactive sortie 4
etat1=1;
}
else
{
digitalWrite(4, LOW); // Désactive sortie 4
}
//==================================================================================
if (val1 < 10000 && etat2 == 0)
{
digitalWrite(3, HIGH); // Active sortie 3
}
if (val1 < 10000 && etat2 == 1)
{
digitalWrite(3, LOW); // Désactive sortie 3
}
}
//=============================== FIN DU PROGRAMME ===================================emphasized text
Quelqu'un peut il me faire bénéficier de son expertise ?
Merci
Grand merci pour votre retour,
Mais contrairement à moi, et peut être êtes vous d'une plus récente génération que moi, j'avoue avoir un beaucoup de mal a décripter (ma formation initiale il y a longtemps était au basic 21 ...), et intégrer les solutions que vous apportez :
Mon code fonctionne incorrectement en téléversant en 1Mhz avec les seuils écrits, mais lorsque je verse en 8Mhz plus rien ne fonctionne
Pour le reste, je ne comprends pas vos lignes IRS (PCINT_vect) { et toute sa suite ...
Là c'est moi qui bugge !
Etant ne en 56 je ne pense pas a un probleme generationel..
Un peu de lecture pour deblayer le terrain
Ensuite on verra pour faire mieux
(En appuyant sur retour il y a d autres exemples)
Une petite lecture d un exemple de programmation des fuses sur attiny me semble aussi nécessaire
Compiler en 8mHz si les fuses sont en 1 ne risque pas de marcher.
Un petit tuto sur le signal de la radio commande pwm est aussi nécessaire pour corriger les seuils.(ils sont corrects dans l exemple mais comprendre pourquoi c'est mieux)
Enfin suivre les conseils en éditant votre post initial serait indéniablement un plus nécessaire.