//Compte_tours SmartPhone301217 //Ce compte -tours sensible à 10t/mn près est conçu pour le reglage fin des carburateurs. //Il affiche le regime pour un monocylindre 4 temps et N fois le régime pour un N cylindres char Ver[] = "Compte_tours SmartPhone,V du 30_12_17"; //Chaque étincelle declenche l'isrEtin qui calcul T //********IMPORTANT : Moniteur et HC05/06 tous à 9600bps********************** //Hardware: 7805 alim 5V( branché sur +12V de l'auto) + HC 05 ou 06, 9600bps, Arduino (Uno, Nano etc) //La capture des étincelle se fait au primaire de la bobine par connexion directe //Avantages: fiabilité de capture et aucune pince inductive necessaire //Les commandes sont reçues et affichées sur un smartphone/tablette Android //APPLI Smartphone: conseillée ,excellente et va bien aussi avec HC-06! //***************MODE D'EMPLOI************************** //Connecter le fil de capture d'étincelle sur la sortie du primaire de la bobine //On y trouve en general le fil du compte-tours de l'auto //Connecter la masse puis le + sur le +12 de la bobine. // Activer le Bluetooth sur le smartphone.Lancer l'appli //A la première utilisation uniquement, le smartphone demande // le mot de passe du module HC05/06 qui est toujours 1234 d'origine #include SoftwareSerial BT(10, 11); // RX,TX respectivement vers le HC05/06 à 9600bps #define Etin 2 //Entrée de l'étincelle, sur D2, IT 0,montant #define LED13 13 //Led standard de l'Arduino int signed long T = 0; //Periode en cours en microsecondes int unsigned long N = 0; //N en tours/mn, peut monter à plus de 44 000, 4 temps int unsigned long prec_H = 0; //Heure du front precedent en µs float k = 12000000; //Calcul de N/10 mono cylindre 4 temps int unsigned long del = 50000; //Pour delai 500ms environ de rafraichissement volatile float monDelai = 0 ;// Evite d'utiliser la fonction milli()incompatible avec les interruptions. //voir http://a110a.free.fr/SPIP172/article.php3?id_article=144 ////////////////////La fonction activée lors d'une interruption//////////////// void isrEtin()/////////////////////////////// { T = micros() - prec_H; //D2 est monté, calculer T prec_H = micros(); //heure de début prochaine periode digitalWrite (LED13, 1); delay(100); digitalWrite (LED13, 0);//Led sur Nano } ////////////////////////////// void setup() { pinMode(Etin, INPUT);//1 qd etincelle pinMode(LED13, OUTPUT);//Repetiteur d'etincelle BT.begin(9600);//La liaison série soft D10 et D11 vers module Bt HC05 ou 06 !!!VERIFIER cette vitesse!! attachInterrupt(0, isrEtin, RISING); //IT0 sur D2, front montant, isrEtin() executée Serial.begin(9600);//La série standard, hardware, D0 et D1 vers PC!!VERIFIER cette vitesse!! BT.println(); Serial.println(); BT.println(); Serial.println(); Serial.println(__DATE__); Serial.println(__TIME__); BT.println(__DATE__); BT.println(__TIME__); BT.println("Bonjour"); BT.println(); Serial.println(Ver); BT.println(Ver); BT.println(); BT.println("Ph Loutrel"); //Serial.println("Salut"); BT.println("Bonjour"); BT.println(); BT.println(); delay(3000); } void loop() { Serial.print("T "); Serial.println(T); BT.print(N = k / T);//Serial.println(N);//Afficher monDelai = 1 ; while (monDelai < del) monDelai++ ; //del=100 pour 1.24ms environ, del =10000 pour 126 ms enviro BT.write(13); BT.write(10);//Nouvelle ligne }