Mettre 2 programmes différents dans 1 programme

Salut, j'ai 2 programmes différents ( Programme Capteur d'obstacle et Capteur de vitesse), je voudrais mettre c'est 2 programmes dans 1 programme Arduino.
Merci pour l'aide

Bonjour,

Donne nous plus d'informations, montre nous tes deux programmes et explique l'objectif final.

Merci

Diploooo

Dixième ou vingtième fois que la question est posée sur ce forum.
Il existe un moteur de recherche dans le coin haut droit de cette page tu as le droit de l'utiliser il est gratuit.

En vrac :

  • vérifier que les programmes n'utilisent pas les mêmes pins --> erreur la plus courante.
  • vérifier que les programmes n'utilisent pas les mêmes noms de variables ou les que les bibliothèques utilisées n'utilisent pas les mêmes interruptions.
  • vérifier l'ordre des initialisation dans la fonction setup()
  • autres diverses vérifications à la c*n
  • fusionner les fonctions setup() et loop().
  • Regarder les messages d'erreurs à la compilation
    Résoudre les erreurs une par une en commençant OBLIGATOIREMENT par la première qui se produit.
    Car bien souvent une erreur entraîne la détection d'erreurs imaginaire --> ben oui le compilateur n'est pas parfait.

Programme de Capteur d'obstacle

#define trigPin 13 //Trig Ultrasons (sortie)
#define echoPin 12 //Echo Ultrasons (entrée)
#define ledVerte 11 //Led verte
#define ledRouge 10 //Led rouge

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT); //Trig est une sortie
pinMode(echoPin, INPUT); //Echo est le retour, en entrée
pinMode(ledVerte, OUTPUT);
pinMode(ledRouge, OUTPUT);
}

void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); //Trig déclenché 10ms sur HIGH
digitalWrite(trigPin, LOW);

// Calcul de l'écho
duration = pulseIn(echoPin, HIGH);
// Distance proportionnelle à la durée de sortie
distance = duration340/(210000); //Vitesse du son théorique

if (distance <100) { // Distance trop près
digitalWrite(ledVerte,HIGH); //Vert éclairé seulement
digitalWrite(ledRouge,LOW);
}
else { //Trop loin
digitalWrite(ledVerte,LOW);
digitalWrite(ledRouge,HIGH);
}
//Hors de portée (duration)
if ( distance <= 0){
//Serial.print(duration);
Serial.println("Hors de portee");
}
else {
Serial.print(distance);
Serial.print(" cm ");
Serial.print(duration);
Serial.println(" ms");
}
delay(100); //0.1 sec entre deux mesures
}

Programme Capteur GPS
#include <SoftwareSerial.h>

#include <TinyGPS.h>

/* This sample code demonstrates the normal use of a TinyGPS object.
It requires the use of SoftwareSerial, and assumes that you have a
4800-baud serial GPS device hooked up on pins 4(rx) and 3(tx).
*/

TinyGPS gps;
SoftwareSerial ss(4, 3);

static void smartdelay(unsigned long ms);
static void print_float(float val, float invalid, int len, int prec);
static void print_int(unsigned long val, unsigned long invalid, int len);
static void print_date(TinyGPS &gps);
static void print_str(const char *str, int len);

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

Serial.print("Capteur de Position"); Serial.println(TinyGPS::library_version());
Serial.println("by Caca");
Serial.println();
Serial.println("Sats HDOP Latitude Longitude Fix Date Time Date Alt Course Speed Card Distance Course Card Chars Sentences Checksum");
Serial.println(" (deg) (deg) Age Age (m) --- from GPS ---- ---- to France ---- RX RX Fail");
Serial.println("-------------------------------------------------------------------------------------------------------------------------------------");

ss.begin(9600);
}

void loop()
{
float flat, flon;
unsigned long age, date, time, chars = 0;
unsigned short sentences = 0, failed = 0;
static const double FRANCE_LAT = 48.2788992, FRANCE_LON = -3.5441562999999405;

print_int(gps.satellites(), TinyGPS::GPS_INVALID_SATELLITES, 5);
print_int(gps.hdop(), TinyGPS::GPS_INVALID_HDOP, 5);
gps.f_get_position(&flat, &flon, &age);
print_float(flat, TinyGPS::GPS_INVALID_F_ANGLE, 10, 6);
print_float(flon, TinyGPS::GPS_INVALID_F_ANGLE, 11, 6);
print_int(age, TinyGPS::GPS_INVALID_AGE, 5);
print_date(gps);
print_float(gps.f_altitude(), TinyGPS::GPS_INVALID_F_ALTITUDE, 7, 2);
print_float(gps.f_course(), TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);
print_float(gps.f_speed_kmph(), TinyGPS::GPS_INVALID_F_SPEED, 6, 2);
print_str(gps.f_course() == TinyGPS::GPS_INVALID_F_ANGLE ? "*** " : TinyGPS::cardinal(gps.f_course()), 6);
print_int(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0xFFFFFFFF : (unsigned long)TinyGPS::distance_between(flat, flon, FRANCE_LAT, FRANCE_LON) / 1000, 0xFFFFFFFF, 9);
print_float(flat == TinyGPS::GPS_INVALID_F_ANGLE ? TinyGPS::GPS_INVALID_F_ANGLE : TinyGPS::course_to(flat, flon, FRANCE_LAT, FRANCE_LON), TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);
print_str(flat == TinyGPS::GPS_INVALID_F_ANGLE ? "*** " : TinyGPS::cardinal(TinyGPS::course_to(flat, flon, FRANCE_LAT, FRANCE_LON)), 6);

gps.stats(&chars, &sentences, &failed);
print_int(chars, 0xFFFFFFFF, 6);
print_int(sentences, 0xFFFFFFFF, 10);
print_int(failed, 0xFFFFFFFF, 9);
Serial.println();

smartdelay(1000);
}

static void smartdelay(unsigned long ms)
{
unsigned long start = millis();
do
{
while (ss.available())
gps.encode(ss.read());
} while (millis() - start < ms);
}

static void print_float(float val, float invalid, int len, int prec)
{
if (val == invalid)
{
while (len-- > 1)
Serial.print('*');
Serial.print(' ');
}
else
{
Serial.print(val, prec);
int vi = abs((int)val);
int flen = prec + (val < 0.0 ? 2 : 1); // . and -
flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;
for (int i=flen; i<len; ++i)
Serial.print(' ');
}
smartdelay(0);
}

static void print_int(unsigned long val, unsigned long invalid, int len)
{
char sz[32];
if (val == invalid)
strcpy(sz, "*******");
else
sprintf(sz, "%ld", val);
sz[len] = 0;
for (int i=strlen(sz); i<len; ++i)
sz = ' ';

  • if (len > 0)*
  • sz[len-1] = ' ';*
  • Serial.print(sz);*
  • smartdelay(0);*
    }
    static void print_date(TinyGPS &gps)
    {
  • int year;*
  • byte month, day, hour, minute, second, hundredths;*
  • unsigned long age;*
  • gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age);*
  • if (age == TinyGPS::GPS_INVALID_AGE)*
    _ Serial.print("********** ******** ");_
  • else*
  • {*
  • char sz[32];*
  • sprintf(sz, "%02d/%02d/%02d %02d:%02d:%02d ",*
  • month, day, year, hour, minute, second);*
  • Serial.print(sz);*
  • }*
  • print_int(age, TinyGPS::GPS_INVALID_AGE, 5);*
  • smartdelay(0);*
    }
    static void print_str(const char *str, int len)
    {
  • int slen = strlen(str);*
  • for (int i=0; i<len; ++i)*
    _ Serial.print(i<slen ? str : ' ');_
    * smartdelay(0);*
    }

Un ce n'est pas moi qui vais faire la fusion, désolé.
Fais une recherche sur le forum.
Et deux il me semble que pour publier du code ceci est toujours d'actualité :

J'ai chercher je n'ai pas trouvé

Tu n'as rien regardé avant de poster et tu as tout balancé en vrac sans chercher à faire quoi que ce soit.

La preuve ENORME.
Setup programme 1

Serial.begin (9600);

Setup du programme 2

Serial.begin (115200);

Cela ne donne pas envie d'aider.
Prend une feuille de papier, trace un trait vertical au milieu, copie chaque setup et compare ligne à ligne.