MicroRupteurMan
#1 Guest_MicroRupteurMan_*
Posté 24 septembre 2011 - 11:39
Voila, comme dit dans ma présentation mon budget initiale est de 80€. J'ai un certain niveaux de connaissance en electronique, on va dire 5/20 étant donné le nombre de donné concerné !
Le must pour moi serai de monter mes circuits sur ca:
Mon lien
Ce châssis est composé de 2 moteurs, un pour chaque coté, je pense que c'est adaptable pour un 'gros' cocotix.
Je voudrais quelque capteur IR dessus (normal) pour contourner les objets(je préférerai) ou un pour suivre une ligne.
Donc j'attend vos proposition. Et savoir quelle matériel acheté.
Voila.
edit: Aprés feuilletage du fofo, je pense adapter l'electronique de Roby
Roby
re-edit:
Les cartes Arduino Duemilanove ATmga328, se font plus, je peut mettre une Arduino UNO Atmega328 a la place ?
Arduino UNO
ou
DFRduino
Faut quoi comme capteur ?
Aprés feuilletage du web je pense prendre une DFRduino Romeo 328 . Car pas besoin d'extension pour brancher un moteur CC.
Avec :
DFRduino Romeo Robotique 328
Capteur de distance Sharp GP2D12 à infra-rouge
Et le chassis, je suis pile dans le budget .
#2 Guest_MicroRupteurMan_*
Posté 25 septembre 2011 - 07:13
#3
Posté 26 septembre 2011 - 10:40
dans ce cas la arduino uno me semble plus que performante pour ca ! même avec un peu + de capteurs
je l'ai achetée et simple d'utilisation donc je la conseille pour les débutants comme moi !
#4 Guest_MicroRupteurMan_*
Posté 26 septembre 2011 - 03:52
Et je vais lui rajouté des phare avec 4 led Haute luminosité branché sur un détecteur crépusculaire.
J'ai commandé le matos, on est un peu au dessus du budget mais bon..
J'ai pris une arduino uno atmega328 avec un shield moteur, et le capteur sharp.
#5 Guest_MicroRupteurMan_*
Posté 29 septembre 2011 - 05:48
merci
#6
Posté 29 septembre 2011 - 07:04
Aisé se si c'est un de mes programmes ça pourrait t’être utile
#include <Servo.h> int vitesse1 = 6; int vitesse2 = 5; int direction1 = 7; int direction2 = 4; int capteur = 0; // broche analogique utilisé pour connecter le capteur int val; // variable pour lire la valeur de la broche analogique Servo myservo;// créer un objet de servo pour contrôler un servomoteur void Moteur1(int valeur_vitesse, boolean sens_avant) { analogWrite(vitesse1,valeur_vitesse); //valeur_vitesse = 0 à l'arrêt, et 255 pour vitesse maximum if(sens_avant) { digitalWrite(direction1,HIGH); } else { digitalWrite(direction1,LOW); } } void Moteur2(int valeur_vitesse, boolean sens_avant) { analogWrite(vitesse2,valeur_vitesse); //valeur_vitesse = 0 à l'arrêt, et 255 pour vitesse maximum if(sens_avant) { digitalWrite(direction2,HIGH); } else { digitalWrite(direction2,LOW); } } void setup() { myservo.attach(2); // attache le servo sur la broche 2 à l'objet servo int i; for(i=4;i<=8;i++) pinMode(i, OUTPUT); //met les pin 4,5,6,7 en mode sortie } void loop() { val = analogRead(capteur); // lit la valeur du capteur (valeur comprise entre 0 et 115) val = map(val, 0, 115, 0, 300); // l'échelle pour l'utiliser avec le servo (valeur entre 0 et 300) myservo.write(val); // définit la position d'asservissement en fonction de la valeur à l'échelle delay(1000); // attend que le servo pour y arriver if (val <= 170) // si on est à moins de quelque cm d'un obstacle { Moteur1(0,true); //j’arrête le moteur 1 Moteur2(0,true); // j’arrête le moteur 2 delay(300); //j’attends quelque secondes Moteur1(255,true); //j'avance le moteur 1 a fond Moteur2(0,true); // j’arrête le moteur 2 delay(400); //j’attends quelque secondes Moteur1(255,true); //J'avance tout droit en mettant les 1 moteurs à fond Moteur2(255,false); //J'avance tout droit en mettant les 2 moteurs à fond } else { Moteur1(255,false); Moteur2(255,true); } }
#7 Guest_MicroRupteurMan_*
Posté 29 septembre 2011 - 08:00
#8
Posté 29 septembre 2011 - 08:03
#9 Guest_MicroRupteurMan_*
Posté 30 septembre 2011 - 12:53
#10
Posté 30 septembre 2011 - 01:22
Tu parles d'une Carte d'extension c'est ça???
#11 Guest_MicroRupteurMan_*
Posté 30 septembre 2011 - 02:10
J'ai la meme carte que toi pour le moteur.
Voici la partie du code qui me pose problème : (je sais, c'est faux >)
Broche pour le moteur : 4&5
le reste c'est des led.
void setup() { pinMode(9,OUTPUT); pinMode(7,OUTPUT); pinMode(13,OUTPUT); pinMode(2,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); //initialisation broche n°/sortie; } void loop() { int sensorValue = analogRead(A0); if (sensorValue >400) { delay(250); digitalWrite(2,HIGH); delay (100); digitalWrite(2,LOW); delay (100); digitalWrite(2,HIGH); delay (100); digitalWrite(2,LOW); delay(100); digitalWrite(5,HIGH); //moteur sens2 delay(2000); //pendant2s digitalWrite(5,LOW); //moteur sens2 Stop digitalWrite(2,HIGH); delay (100); digitalWrite(2,LOW); delay (1000); >digitalWrite(4,HIGH); //moteur sens1 >delay(2000); //pendant2s >digitalWrite(4,LOW); //moteur sens1 Stop delay(1000); }
#12
Posté 30 septembre 2011 - 04:30
#13 Guest_MicroRupteurMan_*
Posté 30 septembre 2011 - 06:39
#14 Guest_MicroRupteurMan_*
Posté 01 octobre 2011 - 11:38
Voila 'mon' programme:
// Les Moteurs int vitesse1 = 6; int vitesse2 = 5; int direction1 = 7; int direction2 = 4; void Moteur1(int valeur_vitesse, boolean sens_avant) { analogWrite(vitesse1,valeur_vitesse); //valeur_vitesse = 0 à l'arrêt, et 255 pour vitesse maximum if(sens_avant) { digitalWrite(direction1,HIGH); // HIGH (=HAUT) } else { digitalWrite(direction1,LOW);// LOW (=BAS) } } void Moteur2(int valeur_vitesse, boolean sens_avant) { analogWrite(vitesse2,valeur_vitesse); //valeur_vitesse = 0 à l'arrêt, et 255 pour vitesse maximum if(sens_avant) { digitalWrite(direction2,HIGH);// HIGH (=HAUT) } else { digitalWrite(direction2,LOW);// LOW (=BAS) } } void setup() { pinMode(9,OUTPUT);//OUTPUT (= en sortie) pinMode(7,OUTPUT);//OUTPUT (= en sortie) pinMode(13,OUTPUT);//OUTPUT (= en sortie) pinMode(2,OUTPUT);//OUTPUT (= en sortie) int i; for(i=5;i<=8;i++) pinMode(i, OUTPUT); //met les pin 4,5,6,7 en mode sortie //initialisation broche n°/sortie; } void loop() { int sensorValue = analogRead(A0); if (sensorValue >180) { digitalWrite(2,HIGH);// HIGH (=HAUT) delay (100); digitalWrite(2,LOW);// LOW (=BAS) delay (100); digitalWrite(2,HIGH);// HIGH (=HAUT) delay (100); digitalWrite(2,LOW);// LOW (=BAS) delay(100); digitalWrite(2,HIGH);// HIGH (=HAUT) delay (100); digitalWrite(2,LOW);// HIGH (=HAUT) delay (100); Moteur1(0,true); // true (=VRAI) j'arrete le moteur 1 Moteur2(0,true); // true (=VRAI) j'arrete le moteur 2 delay(25); Moteur1(255,true); // true (=VRAI) j'allume le moteur 1 Moteur2(255,true); //j'allume le moteur2 = m1+m2 = tourne sur place } else { Moteur1(255,false);//false (= FAUX) Moteur2(255,true);//true (=VRAI) } } //Donc le bot avance a fond les bananes, et quand il voit un obstacle devant lui (30cm) il se met a tourne sur place jusqu'à ce qu'il trouve un chemin dégager .
Équipé de :
Eclairage:
-5 led 5mm blanche 18000mdc a l'avant(ca éclaire loin....)
-2led rouge a l'arrière simple en 5mm
Je fait les test pour adapter un détecteur crépusculaire.
Electronique:
-2moteurs CC
- Carte Arduino Uno Atmega328
- Shield moteur 1a (un peu juste) DFRduino de DF robot
- Capteur Infra-Rouge Sharp Gp2D12
- PILE RECHARGEABLE !
Prochaine étape, rajout de capteur IR Sharp a l'avant Dirigé vers le sol pour pas qu'il tombe dans les escaliers !!!
#15
Posté 01 octobre 2011 - 11:50
#16 Guest_MicroRupteurMan_*
Posté 03 octobre 2011 - 03:29
#include <Servo.h> //servo, l'angle du servo est a 0° bloqué, 90°centré #define INCR 10 Servo servo1; int angle = 0; int sens = 0; // Les Moteurs int vitesse1 = 6; int vitesse2 = 5; int direction1 = 7; int direction2 = 4; int ledRouge = 11; int ledBleue = 12; void Moteur1(int valeur_vitesse, boolean sens_avant) { analogWrite(vitesse1,valeur_vitesse); //valeur_vitesse = 0 à l'arrêt, et 255 pour vitesse maximum if(sens_avant) { digitalWrite(direction1,HIGH); // HIGH (=HAUT) } else { digitalWrite(direction1,LOW);// LOW (=BAS) } } void Moteur2(int valeur_vitesse, boolean sens_avant) { analogWrite(vitesse2,valeur_vitesse); //valeur_vitesse = 0 à l'arrêt, et 255 pour vitesse maximum if(sens_avant) { digitalWrite(direction2,HIGH);// HIGH (=HAUT) } else { digitalWrite(direction2,LOW);// LOW (=BAS) } } void setup() { servo1.attach(9); //servo conecte sur pin9, pwm pinMode(9,OUTPUT); pinMode(7,OUTPUT); pinMode(2,OUTPUT); pinMode (ledBleue,OUTPUT); pinMode (ledRouge,OUTPUT); int i; for(i=5;i<=8;i++) pinMode(i, OUTPUT); //met les pin 4,5,6,7 en mode sortie //initialisation broche n°/sortie; } void loop() { { digitalWrite(ledRouge,HIGH); delay(70); digitalWrite(ledRouge,LOW); digitalWrite (ledBleue,HIGH); delay(70); digitalWrite (ledBleue,LOW); } int sensorValue = analogRead(A0); if (sensorValue >280 && angle <45) { angle = angle; Moteur1(0,true); // true (=VRAI) j'arrete le moteur 1 Moteur2(0,true); // true (=VRAI) j'arrete le moteur 2 delay(150); Moteur1(255,true); // true (=VRAI) j'allume le moteur 1 Moteur2(255,true); //j'allume le moteur2 = tourne sur place delay(50); } else if (sensorValue >280 && angle >135) { angle = angle; Moteur1 (0,false); Moteur2(0,false); delay(150); Moteur1 (255,false); Moteur2 (255,false); delay(50); } else if (sensorValue >230 && angle<130 && angle>50) { angle = angle; Moteur1(0,true); // true (=VRAI) j'arrete le moteur 1 Moteur2(0,true); // true (=VRAI) j'arrete le moteur 2 delay(150); Moteur1(230,true); Moteur2(230,false); delay(350); Moteur1(0,true); Moteur2(0,true); delay(200); Moteur1(255,true); // true (=VRAI) j'allume le moteur 1 Moteur2(255,true); delay(430); } else { Moteur1(255,false);//false (= FAUX) Moteur2(250,true);//true (=VRAI) } { // faire tourner le servomoteur if (sens == 0) { angle += 34; } else { angle -= 34; } // si on est arrivé à une extremité if (angle == 0) { sens = 0; } if (angle == 170) { sens = 1; } delay(6); servo1.write(angle); }}
// j'expose mais code pour que d'autre personne puissent s'en INSPIRé.
#17
Posté 03 octobre 2011 - 05:38
Pour placer du code dans un message, entoure les de balises [ code] [ /code] afin d'avoir une mise en page qui facilite la lisibilité.
J'ai modifié tes derniers messages en rajoutant ces balises.
Pour info, dans l'éditeur de texte des messages, tu peux automatiquement ajouter les balises en :
- sélectionnant le code du message
- cliquant sur le bouton <> (seconde ligne, 14ème bouton)
Merci
Black Templar
Mon site internet : http://ferdinandpiette.com/
#18
Posté 05 octobre 2011 - 10:46
Page Facebook : https://www.facebook...appartelier2.0/
Page Twitter : https://twitter.com/2Appartelier (bateau seulement)
Boutique Robot-Maker : https://www.robot-ma...er-20/produits/
Besoin d'une impression 3D grand format ? Contactez moi !
#19
Posté 05 octobre 2011 - 11:16
Page Facebook : https://www.facebook...appartelier2.0/
Page Twitter : https://twitter.com/2Appartelier (bateau seulement)
Boutique Robot-Maker : https://www.robot-ma...er-20/produits/
Besoin d'une impression 3D grand format ? Contactez moi !
#20
Posté 05 octobre 2011 - 11:43
Sinon je voie que ta mis un interrupteur ,le mieux prend un bouton poussoir numérique.
0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users