Go Down

Topic: Bac-Ka-Poux-Bêle 2019 (Read 16684 times) previous topic - next topic

nachwa

bonjour à tous,
Comme indiqué dans le titre, j'ai un probleme avec l'arduino. Pour info, je l'utilise dans le cadre d'un projet scolaire (controler un transformateur leur temperature courant tension et puissance), et je suis débutant dans la programmation.

Voici le code :

#include <SPI.h>
#include <Ethernet.h>

#include "lm35.h"
#define LM35PIN 0
#define LM35
#define LM35TYPE  lm35

#include "ACS712.h"
#define acsPIN 1
#define ACS712

#include "ZMPT101B.h"
#define zmpt101bPIN 2
#define ZMPT101B

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192 , 168 , 1 , 101 }; //Enter the IP of ethernet shield
byte serv[] = { 192 , 168 , 1 , 100 } ; //Enter the IPv4 address
EthernetClient cliente;
float temp;
int tempPIN= 0;

float courant;
int courantPIN=1;

float tension;
int tensionPIN=2;
double sensorValue=0;
double sensorValue1=0;
int crosscount=0;
int climbhill=0;
double VmaxD=0;
double VeffD;
double Veff;

#define pin_courant A1
#define pin_tension A2



void setup() {
Serial.begin(9600); //setting the baud rate at 9600
Ethernet.begin(mac, ip);

}
void loop () {
  String data ;
  temp=analogRead(tempPIN);
  temp= (5.0 * temp * 100.0)/1024.0;
 
  float average=0;
  for (int i=0; i < 1000; i++)
   ( courant = average + (.044*analogRead(A1) -3.78)/1000);

   sensorValue1=sensorValue;
delay(100);
sensorValue = analogRead(A0);
if (sensorValue>sensorValue1 && sensorValue>511){
  climbhill=1;
  VmaxD=sensorValue;
  }
if (sensorValue<sensorValue1 && climbhill==1)
 { climbhill=0;
  VmaxD=sensorValue1;
  VeffD=VmaxD/sqrt(2);
  Veff=(((VeffD-420.76)/-90.24)*-210.2)+210.2;
  Serial.println(Veff);
  VmaxD=0;}

 
 if (cliente.connect(serv,8080)) { //Connecting at the IP address and port we saved before
Serial.println("connected");

cliente.println(" POST /ethernet/data.php? "); //Connecting and Sending values to database
cliente.print("temperature=");
cliente.print(temp);
cliente.print("courant=");
cliente.print(courant);
cliente.print("tension=");
cliente.print(tension);
cliente.println( " HTTP/1.1 ");
cliente.println( " Host: 192 , 168 , 1 , 101 " );
cliente.println ();
cliente.println ();
//Printing the values on the serial monitor
Serial.print("Temperature=  ");
Serial.println(temp);
Serial.print("courant=   ");
Serial.println(courant);
Serial.print("Tension=   ");
Serial.println(tension);

cliente.stop(); //Closing the connection
}
else {
// if you didn't get a connection to the server:
Serial.println(" Connection failed");
}
delay(5000);
}

Rommm1

Bonjour je m'adresse à vous aujourd'hui car je dois réaliser un projet dont le but est de pouvoir faire varier la hauteur de coupe d'une tondeuse(30 mm 50 mm 70 mm) a distance a partir d'un logiciel que j'ai déjà crée(sur App Inventor 2). J'ai besoin d'utiliser 4 servomoteurs (1 par roue).Deux d'entre eux on une rotation inverse. J'ai déjà réaliser mon programme mais je n'arrive pas a comprendre pourquoi il ne fonctionne pas car les servos font la rotation de la partie "setup" mais ne font rien lorsque sur internet je clique sur le bouton "30 mm","50 mm" ou "70mm" , si certains sont assez fort en arduino j'aimerai bien votre aide ^^
(J'utilise une carte méga ainsi qu'un shield ethernet V2)

Code :
  #include <SPI.h>
  #include <Ethernet2.h>
  #include <Servo.h>
  Servo ServoAVG;
  Servo ServoAVD;
  Servo ServoARG;
  Servo ServoARD;
  int pos = 0;     
  int posi = 0;
  byte mac[] = { 0x90, 0xA2, 0xDA, 0x10, 0xF6, 0x22 };
  byte ip[] = { (mon IP que je cache) };
  byte subnet[] = { 255, 255, 255, 0 };               
  EthernetServer server(80);                             
  String readString;





void setup() {
  Serial.begin(9600);
    ServoAVG.write(pos);
    ServoAVD.write(posi);
    ServoARG.write(posi);
    ServoARD.write(pos);
    ServoAVG.attach(5);
    ServoAVD.attach(9);
    ServoARG.attach(7);
    ServoARD.attach(6);
  Ethernet.begin(mac, ip, subnet);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
              }

void loop() {
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {   
      if (client.available()) {
        char c = client.read();
     
        if (readString.length() < 100) {
              readString += c;
       
         }
 
         if (c == '\n') {         
           Serial.println(readString);
             client.println("HTTP/1.1 200 OK");
             client.println("Content-Type: text/html");
             client.println();
             client.println("<HTML>");
             client.println("<HEAD>");
             client.println(" <meta name='apple-mobile-web-app-capable' content='yes' />");
             client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");
             client.println("<link rel='stylesheet' type='text/css' href='https://randomnerdtutorials.com/ethernetcss.css' />");
             client.println("<TITLE>Hauteur de coupe de la tondeuse</TITLE>");
             client.println(" </HEAD>");
             client.println(" <BODY>");
             client.println(" <H1>TONDEUSE</H1>");
             client.println(" <hr />");
             client.println("<br />");
             client.println("<H2>Hauteurs:</H2>");
             client.println(" <br />");
             client.println(" <a href=\"/?button1on\"\">30mm</a>");
             client.println("<a href=\"/?button2on\"\">50mm</a>");
             client.println(" <a href=\"/?button3on\"\">70mm</a>");
             client.println(" <br />");
             client.println(" <br />");
             client.println(" <br />");
             client.println("</BODY>");
             client.println(" </HTML> ");   
           
     
           delay(1);
           
           client.stop();
           //POSITION 1 30mm
           if (readString.indexOf("?button1on") >0){
              ServoAVG.write(pos = 0);
              ServoAVD.write(posi = 180);
              ServoARG.write(posi = 180);
              ServoARD.write(pos = 0);
              delay(50);
               for(pos = 0; pos < 80; pos += 3) 
                {                               
                  ServoAVG.write(pos);   
                  ServoARD.write(pos);         
                 delay(50);
                }
               for(posi = 180; posi > 100; posi -= 3)
               {
                  ServoAVD.write(posi);
                  ServoARG.write(posi);
                 delay(50);
               }
           }
           //POSITION 2 50mm
           if (readString.indexOf("?button2on") >0){
              ServoAVG.write(pos = 0);
              ServoAVD.write(posi = 180);
              ServoARG.write(posi = 180);
              ServoARD.write(pos = 0);
              delay(50);
               for(pos = 0; pos < 45; pos += 3)
               
                {                                 
                  ServoAVG.write(pos);   
                  ServoARD.write(pos);           
                 delay(50);
                }
              for(posi = 180; posi > 135; posi -=3)
              {
                 ServoAVD.write(posi);
                 ServoARG.write(posi);
                delay(50);
              }
              }
           }
           //POSITION 3 70mm
           if (readString.indexOf("?button3on") >0){
              ServoAVG.write(pos = 0);
              ServoAVD.write(posi = 180);
              ServoARG.write(posi = 180);
              ServoARD.write(pos = 0);
              delay(50);
                for(pos = 0; pos < 10; pos += 3)
                {                               
                  ServoAVG.write(pos);     
                  ServoARD.write(pos); 
                 delay(50);                     
                }
               for(posi = 180; posi >170; posi -=3)
               {
                ServoAVG.write(posi);
                ServoARG.write(posi);
               delay(50); 
               }
           }
         
       
            readString=""; 
           
         }
       }
    }
}

blodewedd

Bonjour

je souhaite détecter un seuil (une distance) à l'aide d'un capteur ToF (time of flight ou temps de vol).
pour l'instant je veux juste allumer une led si je dépasse le seuil.

je mets plus bas le code utilisé.
(je suis partie de l'exemple fourni par la librairie)

la partie affichage de la distance fonctionne mais je n'arrive pas à commander la led.
pouvez-vous m'aider ?
Merci
 

#include "Adafruit_VL53L0X.h"
#include <SoftwareSerial.h>
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
unsigned int mesure;
int Pin = 2;
//int analogPin = A4;
int val = 0;
#define seuil 200

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

  // wait until serial port opens for native USB devices
  while (! Serial) {
    delay(1);
  }
 
  Serial.println("Adafruit VL53L0X test");
  if (!lox.begin()) {
    Serial.println(F("Failed to boot VL53L0X"));
    while(1);
  }
  // power
  Serial.println(F("VL53L0X API Simple Ranging example\n\n"));

pinMode(Pin,OUTPUT);
digitalWrite(Pin, LOW);
}


void loop() {
  VL53L0X_RangingMeasurementData_t measure;
   
  Serial.print("Reading a measurement... ");
  lox.rangingTest(&measure, false); // pass in 'true' to get debug data printout!

  if (measure.RangeStatus != 4) {  // phase failures have incorrect data
    Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);
  } else {
    Serial.println(" out of range ");
  }
  val=analogRead(A4);
  Serial.println(val);
if (val > seuil)
 {
  digitalWrite(Pin,HIGH);
 }   

  delay(100);
}





hbachetti

Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

al1fch

#304
May 20, 2019, 08:56 pm Last Edit: May 20, 2019, 09:03 pm by al1fch
Quote
je suis partie de l'exemple......
Encore une  qui a 'tout faux' (où poster ? comment publier le code ?) et qui n'a pas eu l'idée de se renseigner sur le fonctionnement du forum avant de poster

Go Up