Club robotique de Sophia-Antipolis

Accueil > Projets du club > Nos robots > Robots du club > Robots spéciaux > Nono, le robot d’animation pédagogique (2012) > Programmes de tests de Nono

Programmes de tests de Nono

lundi 25 juin 2012, par Julien H.

Notre robot Nono dispose de plusieurs systèmes, il est donc important de pouvoir tous les tester régulièrement.

Tests sur Arduino

Les contacts par micro-switch

Le cou est équipé de deux contacts. Voici un premier code pour tester facilement un des contacts, connecté sur l’entrée numérique n°2.

Le contact est fermé au repos (NC sur le micro-switch) et se coupe lorsqu’il y a contact. L’entrée doit donc être câblée avec une résistance de pull-down (ou push-down) soit un signal bas (la masse). On peut utiliser la résistance interne mais personnellement ça n’a jamais marché : j’utilise une résistance de 10k.


void setup()

Serial.begin(9600) ;
Serial.println("Nono test contacts") ;

pinMode(2,INPUT) ;
digitalWrite(2,LOW) ;

Serial.println("Pret...") ;

void loop()

Serial.println(digitalRead(2)) ;
delay(200) ;


Ce qui affiche des 1 en répétition, sauf lorsque le contact est appuyé sur le microrupteur.

Voici le même test avec une interruption :


void setup()

Serial.begin(9600) ;
Serial.println("Nono test contacts") ;

pinMode(2,INPUT) ;
digitalWrite(2,LOW) ;

attachInterrupt(0,contactGauche,CHANGE) ;

Serial.println("Pret...") ;

void contactGauche()

if (digitalRead(2) == HIGH)
Serial.println("ouvert") ;
else
Serial.println("ferme") ;

delay(200) ;

void loop()


Le moteur du cou est le moteur 2. Il utilise deux pattes logiques : 7 pour la direction et 6 pour la vitesse (sachant qu’on l’utilisera en tout ou rien).

Voici le code qui met en mouvement la tête dans le sens horaire (de gauche à droite), change le sens quand le contact gauche (tête visant à droite) est déclenché, et change le sens quand le contact droit (tête visant à gauche) est déclenché.


void setup()

Serial.begin(9600) ;
Serial.println("Nono test contacts") ;

// les contacts
pinMode(2,INPUT) ;
digitalWrite(2,LOW) ;
pinMode(3,INPUT) ;
digitalWrite(3,LOW) ;

attachInterrupt(0,contactGauche,CHANGE) ;
attachInterrupt(1,contactDroite,CHANGE) ;

// le moteur du cou

pinMode(7,OUTPUT) ; // la direction
pinMode(6,OUTPUT) ; // la vitesse

digitalWrite(6,HIGH) ;
digitalWrite(7,HIGH) ; // on débute dans le sens horaire

Serial.println("Pret...") ;

void contactDroite()

if (digitalRead(3) == HIGH)
Serial.println("ouvert") ;

else
Serial.println("ferme") ;
// change la direction —> horaire
digitalWrite(7,HIGH) ;

delay(200) ;

void contactGauche()

if (digitalRead(2) == HIGH)
Serial.println("ouvert") ;

else
Serial.println("ferme") ;
// change la direction —> antihoraire
digitalWrite(7,LOW) ;

delay(200) ;

void loop()


Un message, un commentaire ?

modération a priori

Attention, votre message n'apparaîtra qu'après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d'abord sur gravatar.com (gratuit et indolore) et n'oubliez pas d'indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document