BIKEDUINO::: Arrêt Point Predictor pour cyclistes (3 / 6 étapes)

Étape 3: Étape 2: traiter la lecture du Dynamo et obtenir la vitesse, l’accélération et la DISTANCE

Récupérez les données sur l’Arduino et processus de légumineuses afin d’obtenir la vitesse, Aceleration et distance selon les impulsions.

Vous devez acurate très précisément en comptant les impulsions, puis calbulate la vitesse, l’accélération et la DISTANCE.

Ici, vous obtenez le code.

Bikeduino, version 1
Permet à votre vélo de pointer un laser à l’endroit où elle défendra toujours si la décélération reste constante.

#include < Servo.h >

Servo servo ;

broche analogique
#define DYNAMO_PIN 5
broche numérique PWM
#define SERVO_PIN 10
broche numérique
#define LASER_PIN 11

fenêtre de temps moyenne de sample
#define WINDOW_SIZE 32
fenêtre de calcul de la moyenne d’accélération
#define AWINDOW_SIZE 8

l’angle à quel servo est orientée horizontalement
#define SERVO_STRAIGHT_ANGLE 140
le montant de milimeters le vélo se déplace dans une impulsion de la dynamo (mesurée)
#define mm_per_pulse 16
le montant de milimeters le laser est au-dessus du sol (sur le vélo)
#define bike_height 1030

void setup() {}
Serial.Begin(19200) ;
Serial.println ("Bikeduino version 1.") ;
servo.Attach(SERVO_PIN) ;
servo.Write(SERVO_STRAIGHT_ANGLE) ;
pinMode (LASER_PIN, sortie) ;
}

int q [WINDOW_SIZE] ;
int q_p = 0 ;

void queue(int x) {}
Si (++ q_p > = WINDOW_SIZE)
Q_p = 0 ;
q [q_p] = x ;
}

int average_pulsetime() {}
int i ;
long r = 0 ;
pour (i = 0; i < WINDOW_SIZE; i ++) {}
r += q [i] ;
}
Return (int) (r/WINDOW_SIZE) ;
}

aq int [AWINDOW_SIZE] ;
int aq_p = 0 ;

void aqueue(int x) {}
Si (++ aq_p > = AWINDOW_SIZE)
aq_p = 0 ;
AQ [aq_p] = x ;
}

int average_acceleration() {}
int i ;
long r = 0 ;
pour (i = 0; i < AWINDOW_SIZE; i ++) {}
r += aq [i] ;
}
Return (int) (r/AWINDOW_SIZE) ;
}

void wait_for_pulse() {}
/*
tandis que (digitalRead(DYNAMO_PIN)) {}
}
tandis que (! digitalRead(DYNAMO_PIN)) {}
}
*/
alors que {(analogRead(DYNAMO_PIN) < 300)
}
alors que {(analogRead(DYNAMO_PIN) > 300)
}
}

void laser_off() {}
digitalWrite (LASER_PIN, basse) ;
}

void laser_on() {}
digitalWrite (LASER_PIN, élevé) ;
}

int v_prev ;
unsigned long prev_t ;

void loop() {}
unsigned long t ;
int dt ;
wait_for_pulse() ;
t = millis() ;
DT = t - prev_t ;
queue(DT) ;
prev_t = t ;

DT = average_pulsetime() ;
int v = (1000 * mm_per_pulse) /dt ; [v] = mm/s

int dv = v - v_prev ;
v_prev = v ;

int a = (int) ((1000*(long)dv) / dt) ; accélération en mm/s ^ 2

aqueue(a) ;
Serial.println() ;
Serial.Print ("a:") ;
Serial.println(a) ;
un = average_acceleration() ;

Serial.Print ("t") ;
Serial.println(t) ;
Serial.Print ("dt maintenant:") ;
Serial.println(q[Q_p]) ;
Serial.Print ("av dt:") ;
Serial.println(DT) ;
Serial.Print (v ":") ;
Serial.println(v) ;
Serial.Print ("a:") ;
Serial.println(a) ;
Si (a == 0) {}
ne changez rien
}
ElseIf (un < 0) {}
Nous sommes ralentit, diriger le laser
laser_on() ;
int d = (int) (-sq((long) v) / a/2) ; longueur (mm) jusqu'à ce que la décélération en supposant statu quo demeure constante
double angle = (180.0/3.1416) * atan ((double) bike_height / d) ; angle entre laser et horizontale vers l’avant
servo.Write(SERVO_STRAIGHT_ANGLE-angle) ; changer le négatif pour un plus si votre servo tourne
Serial.println() ;
Serial.Print ("d:") ;

Serial.println(d) ;
Serial.Print ("angle:") ;
Serial.println(angle) ;

}
else {}
ne pas de ralentissement
laser_off() ;
servo.Write(SERVO_STRAIGHT_ANGLE) ; vers l’avant
}

}

Articles Liés

Contre-pointe bricolage pour maison bois métal Mini Mill tour

Contre-pointe bricolage pour maison bois métal Mini Mill tour

Contre-pointe bricolage pour maison bois métal Mini Mill tourUne poupée est un dispositif utilisé souvent dans le cadre d'une ingénierie tour, tour à bois ou utilisé en conjonction avec une table de rotation sur une fraiseuse.Mini maison bricolage X
En double partie--arrêt de porte pour porte de poche

En double partie--arrêt de porte pour porte de poche

nous avons emménagé dans une maison qui n'a pas un arrêt de porte pour une porte de poche. J'ai essayé de trouver un--mais sans succès.J'ai copié une butée de porte existante et il fonctionne très bien !Il s'agit d'une utilisation pratique pour une i
Arduibag : un sac à dos branché pour cyclistes

Arduibag : un sac à dos branché pour cyclistes

Arduibag est un sac à dos branché pour les cyclistes. C'est aussi un projet open source créé par deux mecs français passionnés : Michaël d'auria et Stéphane DE GRAEVE.Si vous désirez en savoir plus sur Arduibag s'il vous plaît allez à: http://www.ard
Comment faire un airsoft protecteur scope point rouge pour pas cher (fonctionne aussi pour les étendues classiques)

Comment faire un airsoft protecteur scope point rouge pour pas cher (fonctionne aussi pour les étendues classiques)

si vous avez acheté votre premier viseur point rouge. Mais la nuit avant votre première escarmouche que vous vous rendez compte "Accrochez-vous... et si cela se fait frapper par un bb ? Il cassera?" La réponse courte est, vous serez heureux si v
Faire une pointe fine pour votre fer à souder pour souder des CMS

Faire une pointe fine pour votre fer à souder pour souder des CMS

montage en Surface à souder peut nécessiter une pointe très fine pour votre fer à souder. Si vous avez seulement une petite quantité de soudure à faire, alors pourquoi dépenser le temps et l'argent en achetant une astuce quand vous pouvez faire un ?J
Arrêter le ronflement pour moins de 3 dollars

Arrêter le ronflement pour moins de 3 dollars

J'ai un problème de ronflement, ou devrais-je dire que ma femme a un problème de ronflement à cause de moi.Alors que je suis endormi ça ne me dérange pas, mais j'aime ma femme et je veux qu'elle pour être heureux.Aussi, après l'utilisation de cet app
Dans les virages Technique pour cyclistes

Dans les virages Technique pour cyclistes

volodalen.com Expert Gale Bernhardt fournit des conseils utiles sur les technique de virage pour les cyclistes.
Arrêt T-fente pour table moulin vertical

Arrêt T-fente pour table moulin vertical

depuis son arrivée à TechShop j'ai appris sur l'usinage sur le moulin vertical. Un des plus grands défis pour moi a été trouver comment bloquer les travaux qui ne rentre pas facilement dans le vice. Tout en parcourant les « Idées pratiques... pour le
Comment être un truc d’arrêt pour les habitants d’appartement

Comment être un truc d’arrêt pour les habitants d’appartement

il s'agit d'un guide facile à être un truc arrêter sur Halloween pour les gens qui vivent dans des immeubles de taille moyenne.Tout simplement parce que vous vivez dans un immeuble d'habitation ne signifie pas que vous ne peut pas faire partie de la
Arrêt pour perles de printemps

Arrêt pour perles de printemps

Je tiens à avouer que je n'ai jamais perdu un chapelet de perles en perles mais c'est en aucun cas vrai.  J'ai gardé ce qui signifie qu'obtenir un arrêt ou finissent pour perles tandis que dans le magasin mais a toujours semblé oublier.  Je suis entr
Script Python pour arrêter Windows Applications/arrêt de l’ordinateur

Script Python pour arrêter Windows Applications/arrêt de l’ordinateur

# Programme qui arrêtera les applications courantes de Windows et arrêter l'ordinateur# Pour les vraiment paresseux. :-)Print ("arrêt demandes maintenant")# importer le module système d'exploitation# permet aux utilisateurs d'exécuter des comman
Animateur Gadget pour NeoPixels

Animateur Gadget pour NeoPixels

Réglage des couleurs, vitesse d'animation, choisissent votre animation et bien plus encore - tout d'un système de menus à bord.Ce guide montre comment faire un cinq-entrée d'assistance-gadget pour concevoir des animations sur NeoPixels. Un affichage
Des soins appropriés pour votre matériel de 360 et 360

Des soins appropriés pour votre matériel de 360 et 360

si vous êtes un de ceux qui veulent prendre vraiment bien soin de votre 360, alors c'est l'Instructable pour vous.Il s'agit de mon premier instructable, donc s'il vous plaît me donner quelques informations sur comment j'ai fait ou comment je peux amé
10 trucs et astuces pour le Laser de gravure et de découpe

10 trucs et astuces pour le Laser de gravure et de découpe

Bonjour, je suis Geordie et je travaille actuellement à Portland ADX en exécutant l'outil Laser Cutter et graveur. Mon travail consiste à prendre dans les projets du client, mettre en place et de les exécuter sur le laser. En conséquence, j'ai appris