Cadence sur Arduino


Je salue tous frénétiquement!

De temps en temps, je pédale assez activement dans les parcs locaux. Et puis je me suis rendu compte que, peut-être, je ne les avais pas très bien liquidés. J'ai commencé à étudier la question. Cyclopedia affirme que la cadence moyenne devrait être comprise entre 80 et 110 tr / min. D'ACCORD. Vous avez donc besoin d'un ordinateur de vélo avec un capteur de cadence. La Chine n'a pas voulu prendre. Naryl Sigma 16.12 STS + Cadence pour 2900 roubles. Le prix n'est pas bon marché, mais dans la cour, les kryzys et moi, pour ainsi dire, les chômeurs B-) Je l'ai compris et décidé ... En fait, le rôle de l'ordinateur de vélo pour moi est joué par un tas d'iPhones, de programmes de cyclomètre et de montres Casio STB-1000- et ce groupe me convient parfaitement. Et le témoignage de cadence n'est nécessaire que pendant un certain temps. Ensuite, le corps s'habitue et le surveiller constamment n'a aucun sens. En un mot, la compréhension est venue que nous devons collecter une merde temporaire de merde et des bâtons d'arduino et des stocks.

Idée: nous avons mis deux LED sur le volant - verte et rouge. Vert - la cadence est normale. Rouge, respectivement, non. Puis il a eu l'idée que le rouge ne brûle que lorsque la vitesse est supérieure à la normale. Les batteries mangeront donc moins.

Mise en œuvre:
- sur la «plume» d'un interrupteur à lames d'un magasin de radio à proximité, sur la «bielle» un aimant en néodyme
- je vais pousser les LED dans l'enveloppe chinoise
- le contrôleur jouera le rôle d'Arduino Pro Mini 3,3 V 8 MHz

J'ai assemblé le tout sur une planche à pain avec UNO (il est plus facile de coudre et d'avilir ) Au lieu d'un interrupteur à lames, un bouton d'horloge.


Et téléchargé l'esquisse avec la sortie des données sur le port.
Croquis de test:
int cadInt = 0;  //    0=pin2
int ledGreen = 10;  //   
int ledRed = 11;  //   

int count = 0;  //  
int lastCount;  //      
int count4period;  //     

//           :
long time;  //       
long lastTime;  //      
int period;  //   

void setup() {
  pinMode (cadInt, INPUT);  //   ()  
  pinMode (ledGreen, OUTPUT);  //    
  pinMode (ledRed, OUTPUT);  //  
  
  attachInterrupt(cadInt, swap, RISING);
  
  lastTime = millis();  //     
  
  Serial.begin(9600);  //     
}

void swap() {
  count = count+1;
}

void loop() {
  delay(5000);
  
  count4period = count - lastCount;
  
  time = millis();  //      
  period = time - lastTime;  //      
 
  Serial.println(period);  //     
  Serial.println(count4period);  //     
  
  if (count4period >= 6 && count4period <= 9)
  {
    Serial.println ("Green");  //     
    digitalWrite(ledGreen, HIGH);
    digitalWrite(ledRed, LOW);
    } else {
        if(count4period > 9){
        Serial.println ("Red");  //     
        digitalWrite(ledGreen, LOW);
        digitalWrite(ledRed, HIGH);
        } else {
          Serial.println ("LOW CADENCE");  //     
          digitalWrite(ledGreen, LOW);
          digitalWrite(ledRed, LOW);
        }
     }
      
  lastTime = time;  //     
  lastCount = count;  
}


Tout va bien. Tout fonctionne.


Puis il a remonté tout cela sur une planche à pain et a collé un vison.


Soit dit en passant, voici le schéma:

je n'ai que trois piles, car deux seront peu nombreuses, et Fritz n'en montre pas trois.

Et voici à quoi ressemble la taille d'un vélo chinois:


Dans l'analyse et le processus de soudage:

je n'ai dû souder qu'une seule lumière, car la seconde transparente est en fait rouge.

Voici à quoi il ressemblait à la fin de l'opération:

dans le processus de réflexion sur le projet, on pensait qu'au lieu de LED vertes et rouges, nous pouvions coller deux RGB, mais il n'y en avait pas dans l'électro-shop le plus proche, car nous avons ce que nous avons.

Eh bien, j'ai mis l'interrupteur à lames dans un tube en plastique et je l'ai scellé avec un pistolet à colle.


Et alors, qu'en est-il des coûts ... Je n'ai dû dépenser que pour un interrupteur à lames (15 roubles), trois piles AA (86 roubles) et des aimants en néodyme (je les ai achetés stsuko parce que je cherchais un drain, mais je n'étais pas prêt à attendre avec Ali (160 roubles)). Le reste traînait dans des boîtes et attendait l'application. Voici même un fil majeur d'une souris Coolermaster morte appliquée:


Il y a encore peu de monde ...







Attention! Je serai content de voir un pain à cornes dans les commentaires;) Mais sérieusement. En fait, il était possible d'utiliser calmement Atmega8 L au lieu d'un arduino entier et d'abandonner deux coupures aux lumières, et de les contrôler avec PWM. Mais, dans la zashashnik, je n'ai que l'habituel et il n'y a pas de support pour la batterie 18650 pour alimenter cette entreprise. Peut-être plus tard ...

... Le croquis final. (Ne frappez pas le "programmeur" qu'il écrit comme il peut):
Cadence_1.0
int cadInt = 0;  //    0=pin2
int ledGreen = 10;  //   
int ledRed = 11;  //   

int count = 0;  //  
int lastCount = 0;  //      
int count4period = 0;  //     

void setup() {
  pinMode (cadInt, INPUT);  //   ()  
  pinMode (ledGreen, OUTPUT);  //    
  pinMode (ledRed, OUTPUT);  //  
  
  attachInterrupt(cadInt, swap, RISING);
}

void swap() {
  count = count+1;
}

void loop() {
  delay(5000);
  
  count4period = count - lastCount;
  
  if (count4period >= 6 && count4period <= 9) {
    digitalWrite(ledGreen, HIGH);
    digitalWrite(ledRed, LOW);
    } else {
        if(count4period > 9){
        digitalWrite(ledGreen, LOW);
        digitalWrite(ledRed, HIGH);
        } else {
          digitalWrite(ledGreen, LOW);
          digitalWrite(ledRed, LOW);
        }
    }
      
  lastCount = count;  
}



Photos sur place:




... et au maximum


Pour une vidéo snack:


PS Un article ne peut pas être réimprimé sans demande - type ©. Le projet peut être amélioré et retravaillé. Une semaine de travail fructueuse! Et je fais du vélo!

PPS Today a effectué un test. Conclusions:
- Tout fonctionne bien. L'échec n'a été constaté qu'une seule fois. Apparemment, un bavardage a glissé.
- Cela vaut la peine d'utiliser des LED RVB - sous un soleil éclatant, ce sera plus clair.

All Articles