Bac-Ka-Poux-Bêle 2019-2020

Bonsoir
Comme détecteur d'état du l'interrupteur il est possible d'associer une luciole neon (avec sa résistance) et un phototransistor ou avec une photorésistance.
Avec ce type d'optocoupleur maison l'isolation galvanique pourrait être satisfaisante.

Nous travaillons sur un projet

projet scolaire ? annoncer la couleur.....

tu prend un SONOFF basic ou dual, tu rajoute un petit montage avec swich

tu peux avoir l'etat de la lumiere et eteindre/alumé quand tu veux via wifi... ect...

Bonjour à tous comme des centaines de personnes sur ce forum je suis nouveau ici et dans le cadre d'un projet de groupe j'ai besoin de trouver des solutions afin d'ordonner à mon robot d' avancer, pivoter dans la bonne direction ou de reculer en fonction de sa distance et sa direction avec une personne portant une balise. (suivre la balise afin de rester à environ 1m d'elle, dans un environnement intérieur.

Suite à mes recherches j'envisage de faire une triangulation par ondes radio ou bluetooth, avec un émetteur sur la balise, et deux récepteurs espacés sur le robot, ou bien un récepteur qui s'orienterai dans la direction de l’émetteur, voila j'ai entendu parler de RSSI mais je suis bloqué dans mes recherches je n'arrive pas à trouver de solutions concrètes, je n'ai encore aucune référence, quelles solutions dois-je mettre en oeuvre et comment ? Comment bien me documenter pour être capable de réaliser ce projet ?

Je vous remercie et j’espère que vous serez capable de m'apporter une aide qui serait précieuse.

up

un UP 12 minutes après avoir posté n'est pas acceptable sur ce forum.

lisez les règles d'usage et si c'est un projet de bac, annoncez le tel-quel.

cherchez aussi sur le forum, le sujet a déjà été discuté plusieurs fois. Quelle information ne trouvez vous pas dans les autres posts ?

Oui effectivement je suis plutot préssé haha, je sais que la question a deja ete étudiée sur ces forums mais justement je me trouve bloqué si t'a

Je ne comprends pas votre premier post:
envisagez vous de faire une tourelle s'orientant vers le maximum de signal radio capté par une antenne directionnelle? Ceci ferait une chose énorme en ondes très courtes (430 Mhz: l'antenne aurait des dm), mais a été fait pour le wifi IoTuesday: WiFi Maximizer with DIY Yagi-Uda Antenna - News - SparkFun Electronics (il vous faut un emetteur wifi en plus....) dans le domaine des arduino basés sur le esp8266 (peuvent être moins chers que les avr- arduini)

Est ce que des photorésistances ne seraient pas suffisantes, moins chères pour suivre, au moins dans l'obscurité, un faisceau lumineux.....

Bonjour dbrion06, je n'ai pas compris ton message, et je ne sais absolument pas ce que j'envisage de faire, je n'ai que des pistes pour l'instant. Peux tu m'expliquer de quoi tu me parle s'il te plait ?
Merci de ta réponse.

La première étape d'une triangulation, c'est d'avoir un axe (ensuite, yakafokon la répète trois fois) :

je vous ai donné une piste avec des ondes radio -testée par Sparkfun, constructeur renommé-

et une solution moins lourde, si on reste dans l'obscurité, est d'utiliser des faisceaux lumineux....et des photoresistances (peut être qu'à terme, la solution radio sera la moins chère).
Et je ne sais pas non plus ce que vous envisagez de faire? Créer un club d'hésitants? vous documenter? préciser votre demande?

const float SOUND_SPEED = 340.0 / 1000;
const byte TRIGGER_PIN = 2; // Broche TRIGGER
const byte ECHO_PIN = 3; // Broche ECHO
const byte var
const unsigned long MEASURE_TIMEOUT = 50000UL; // 25ms = ~8m à

#include <Servo.h>

Servo monServomoteur;

void setup() {
// Attache le servomoteur à la broche D9
monServomoteur.attach(9);

Serial.begin(9600);

pinMode(TRIGGER_PIN, OUTPUT);
digitalWrite(TRIGGER_PIN, LOW);
pinMode(ECHO_PIN, INPUT);

}

void loop() {

digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);

long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);

float distance_mm = measure / 2.0 * SOUND_SPEED;

Serial.print(F("Distance: "));
Serial.print(distance_mm / 1000.0, 2);
Serial.println(F("m)"));

delay (500);
// Fait bouger le bras de 0° à 180°
for (unsigned long position = 1000; position <= 2000; position += 5)
monServomoteur.writeMicroseconds(position);
delay(1230);
// Fait bouger le bras de 180° à 10°
for (unsigned long position = 2000; position >= 1000; position -= 5)
monServomoteur.writeMicroseconds(position);
delay(1230);
switch (var) {
case 1:
Serial.print ("Distance" >=0.1"m");

(unsigned long position = 1000; position <= 2000; position += 5)
monServomoteur.writeMicroseconds(position);
delay(1230);
break;
case 2:
Serial.print ("Distance" >=0.1"m");
(unsigned long position = 2000; position >= 1000; position -= 5)
monServomoteur.writeMicroseconds(position);
delay(1230);
break;}

Bonjour voici notre projet un planteur de graines autonome qui fonctionne grâce a un capteur ultrasonore programmé pour indiquer une valeur de distance en mètres. L'idée est d'ensuite par rapport à une distance donnée par le capteur commander un servo moteur et ainsi, par exemple si le véhicule dévie de plus de 10 cm de sa trajectoire a gauche ou a droite le programme envoi une commande au servo moteur qui rectifie la trajectoire.le programme du capteur ultasonore et celui du servo moteur fonctionne indépendamment. mais lorsque je les compile je n'y arrive pas pourriez vous m'aider svp merci

Boujour,

Merci de bien vouloir lire les sujets épinglés en tête de forum.
Votre code doit être entre balises pour une présentation optimale sur le site.
Une modification de votre post s'impose ;).

Dejà, vous avez oublié de clore (par des curly brackets) la fonction loop (mettez sous arduino le curseur sur le curly bracket ouvrant de loop() {: il devrait être rouge, ou alors vous avez mal copié collé l'integralité de votre code. J'ai corrigé cette erreur triviale, et je n'ai pas testé plus loin à la compilation; le code résultant est

const float SOUND_SPEED = 340.0 / 1000;
const byte TRIGGER_PIN = 2; // Broche TRIGGER
const byte ECHO_PIN = 3; // Broche ECHO
const byte var
const unsigned long MEASURE_TIMEOUT = 50000UL; // 25ms = ~8m à



#include <Servo.h>

Servo monServomoteur;


void setup() {
    // Attache le servomoteur à la broche D9
    monServomoteur.attach(9);

    Serial.begin(9600);


    pinMode(TRIGGER_PIN, OUTPUT);
    digitalWrite(TRIGGER_PIN, LOW);
    pinMode(ECHO_PIN, INPUT);
}

void loop() {


    digitalWrite(TRIGGER_PIN, HIGH);
    delayMicroseconds(10);
    digitalWrite(TRIGGER_PIN, LOW);

    long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);


    float distance_mm = measure / 2.0 * SOUND_SPEED;

    Serial.print(F("Distance: "));
    Serial.print(distance_mm / 1000.0, 2);
    Serial.println(F("m)"));
   delay (500);
    // Fait bouger le bras de 0° à 180°
    for (unsigned long position = 1000; position <= 2000; position += 5)
        monServomoteur.writeMicroseconds(position);
    delay(1230);
    // Fait bouger le bras de 180° à 10°
    for (unsigned long position = 2000; position >= 1000; position -= 5)
        monServomoteur.writeMicroseconds(position);
    delay(1230);
    switch (var) {
    case 1:
        Serial.print ("Distance" >=0.1"m");

        (unsigned long position = 1000; position <= 2000; position += 5)
        monServomoteur.writeMicroseconds(position);
        delay(1230);
        break;
    case 2:
        Serial.print ("Distance" >=0.1"m");
        (unsigned long position = 2000; position >= 1000; position -= 5)
        monServomoteur.writeMicroseconds(position);
        delay(1230);
        break;
    }
}

Je ai aussi passé votre code dans astyle (rend un peu plus beau: comme le formattage automatique d'Arduino, qui peut faire voir des horreurs).

Si votre code ne compile pas, essayez de copier coller la première erreur (et normalement, le curseur va à la première ligne erronée qui se colorie en rose)

Bonjour, j'ai deux capteurs que j'ai acheté et je souhaite les brancher ensemble afin qu'ils mesurent tous les deux des valeurs:

capteur anémomètre :
https://www.lextronic.fr/temperature-meteo/19999-capteur-anenometre.html
(j'ai utilisé le branchement numéro 2)

capteur girouette:
https://www.gotronic.fr/art-capteur-girouette-25973.htm

[ Code]

#include <math.h>

#define WindSensorPin (2) // Location de la broche en D2

volatile unsigned long Rotations; // cup rotation counter used in interrupt routine
volatile unsigned long ContactBounceTime; // Timer to avoid contact bounce in interrupt routine

float WindSpeed; // kilomètres par heure

void setup() {
Serial.begin(9600);

pinMode(WindSensorPin, INPUT);
attachInterrupt(digitalPinToInterrupt(WindSensorPin), isr_rotation, FALLING);
}

void loop() {

Rotations = 0; // Set Rotations count to 0 ready for calculations

sei(); // Enables interrupts
delay (5000); // attendre 5 secondes
cli(); // Disable interrupts

// convert to mp/h using the formula V=P(2.25/T)
// V = P(2.25/3) =( P * 0.75 ) * 1.61 (*1.61> conversion mph en km/h)(1 mile = 1.61km)

WindSpeed = (Rotations * 0.75) * 1.61 ;

int sensorValue = analogRead(A1);
Serial.println("Test Vitesse du vent");
Serial.println("Rotations\tkm/h");
Serial.println(" ");
Serial.print(Rotations); Serial.print("\t\t");
Serial.println(WindSpeed);
Serial.println(" ");
delay(5000);
Serial.println("Direction du vent");
Serial.println(sensorValue);
Serial.println(" ");
//float angle= 0.1569280069*sensorValue+96.9848608491; (équation trouvée par le tableur)
//Serial.println(angle);

}

// This is the function that the interrupt calls to increment the rotation count
void isr_rotation () {

if ((millis() - ContactBounceTime) > 15 ) { // debounce the switch contact.
Rotations++;
ContactBounceTime = millis();
}

}[ /Code]

Le problème étant que lorsque j'utilise le moniteur de série, seul la girouette m'affiche les valeurs correctes relevée par celle-ci. J'ai aussi rajouté le programme de l'anémomètre juste au dessus, le moniteur série m'indique constamment 0, alors qu'il marchait très bien séparément.
Je souhaiterais comprendre mes erreurs/avoir des corrections.
Cordialement,

0x0.75x1.61 = 0
mais tu vas te faire engueuler....

Bonjour je suis élève de STI2D SIN et j'aurais besoin d'un programme pour remettre a zéro mon codeur incrémentale (car celui ci n'en n'a pas ) une fois qu'un capteur fin de course est activé. j'ai déjà fait un programme pour le codeur que voici :

#define pin 4
int res_codeur=6335;
float angle;
byte etat;
void setup() {
pinMode(9,INPUT);
pinMode(10,INPUT);
attachInterrupt(0,calculangle,RISING); //l’interruption stoppe momentanément les travaux de la boucle loop pour effectuer le calcul de l'angle
Serial.begin(9600);
}

void calculangle()
{

etat=digitalRead(3);

if(etat==1)
{
angle=angle+0.05;
}
else
{
angle=angle-0.05;
}
if
{
interrupteur=1
}
}

void loop() {
Serial.print("etat");
Serial.println(etat);
Serial.println(angle);
}

Crée un fil de discussion séparé pour ton problème afin de ne pas mélanger les réponses, sinon on n'y comprendra rien très rapidement. Demande au modérateur (bouton 'report to moderator' en bas de ton message)

Non, la variable Rotations est incrémentée dans la routine d'interruption : si le programme y rentre la valeur devrait augmenter.

Ici, tu n'as pas besoin des parenthèses, mais ça ne doit pas changer grand chose :

#define WindSensorPin (2)

Tu devrais ôter le second delay(5000), celui dans les instructions d'affichage.

Où as-tu trouvé le code ?

pomme-poire:
mais tu vas te faire engueuler....

Parce qu'il a mis une majuscule à Code?

oui pour les deux
donne voir ton schéma électrique ?

et aussi pour le code posté en vrac dans le corps du message , sans balises correctement utilisées
c'est un truc à finir au bakapoupel :frowning:

AdrienBarbin arrive, est-ce trop demander que de l'inviter à bien lire les consignes et s'assurer que le balisage a produit son effet. ?