Aller au contenu


bypbop

Inscrit(e) (le) 16 juil. 2009
Déconnecté Dernière activité janv. 02 2020 09:01
-----

Sujets que j'ai initiés

Gestion des touches SSH Raspberry Pi / Arduino

25 décembre 2019 - 03:30

Bonjour à tous,

Je déterre un projet robotique que j'avais laissé de coté depuis un bout de temps ...

 

Voilà je me connecte à mon robot en SSH sur la RPi et j'envoie les informations à une Arduino 1280 en UART pour la gestion des moteurs ...

J'aimerais coder un petit exécutable que je lance en ssh pour avoir accès au flèche de mon clavier et envoyer la trame via UART.

 

Quelle langage utiliser pour faire simple ?

 

Bien à vous,

Bypbop


Mode automatique - Expoloration robot chenille

24 septembre 2017 - 11:56

Bonjour à tous,

 

Après une longue absence je reprends mon projet de robot à chenille.

Je viens de terminer la lecture des capteurs ultrasonic à intervalle régulier et j'aimerais commencer le mode automatique ( robot qui se déplace tout seul et dès qu'il rencontre un obstacle change de direction )

 

Pour l'instant j'ai fait un test avec mon code actuel c'est le mode 1.

 

 

Pourriez vous me montrer des exemples de code pour que je puisse m'en inspirer et  paramétrer la distance et par exemple le temps de pause entre les changements de direction ?

#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Ultrasonic.h>

LiquidCrystal lcd(52, 50, 48, 46, 44, 42);


#define ONE_WIRE_BUS 22
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature ds18b20(&oneWire);

#define T1  24
#define E1  26
#define T2  23
#define E2  25
#define T4  30
#define E4  31


Ultrasonic ultrasonic1(T1, E1);
Ultrasonic ultrasonic2(T2, E2);
Ultrasonic ultrasonic4(T4, E4);


int Sequence[][3] = {
{255, 0  ,    0 },
{0,   255  ,  0 , },
{0,   0  ,    255 },
{255, 255  ,    0 },
{0,   255  ,  255 , },
{255,   0  ,    255 },
{255,   255  ,    255 },
};



// Moteur A
int dir1PinA = 13;
int dir2PinA = 12;

// Moteur B
int dir1PinB = 11;
int dir2PinB = 8;

// Vitesse Moteur
int speedPinA = 10;
int speedPinB = 9;

int duree = 0;


char incomingByte;
int mode;

long timerefreshUltrason = 200;
long previousMillisUltrason = 0;

long timedatasend = 1000;
long previousMillis = 0;

long timerefreshLCD = 1000;
long previousMillisLCD = 0;

long timerefreshPIR = 250;
long previousMillisPIR = 0;

long timerefreshRGB = 1000;
long previousMillisRGB = 0;

long previousMillisBuzzer = 0;
int buzzerPin = 2;

int beepdone = 0;

long timerefreshLED = 250;
long previousMillisLED = 0;

int ledcamerablink = 0;
int ledCameraState = LOW;
int ledCameraPin = 28;
int capteurIrPin = 27;
int laserPin = 29;
int laserState = LOW;
int capteurIr = 0;

int BluePin = 3;
int GreenPin = 4;
int RedPin = 5;

int pwmred= 0;
int pwmblue = 0;
int pwmgreen = 0;

String motorA = "";
String motorB = "";
int speedA = 0;
int speedB = 0;

float U1 = 0;
float U2 = 0;
float U3 = 0;
float U4 = 0;


int i=0;
int distanceU2 = 10;

void setup() {
  ds18b20.begin();
  lcd.begin(16, 2);
  Serial.begin(115200);
  lcd.print("KBOT");

  pinMode(dir1PinA, OUTPUT);
  pinMode(dir2PinA, OUTPUT);
  pinMode(dir1PinB, OUTPUT);
  pinMode(dir2PinB, OUTPUT);
  pinMode(speedPinB, OUTPUT);
  pinMode(speedPinA, OUTPUT);
  
  pinMode(ledCameraPin, OUTPUT);
  pinMode(buzzerPin, OUTPUT);
  pinMode(laserPin, OUTPUT);
  pinMode(capteurIrPin, INPUT);

  pinMode(BluePin, OUTPUT);
  pinMode(GreenPin, OUTPUT);
  pinMode(RedPin, OUTPUT);

  
}

float temperature(){
ds18b20.requestTemperatures();
return ds18b20.getTempCByIndex(0);
}

float ultrason(){
long microsec0 = ultrasonic1.timing(); 
float cmMsec0 = ultrasonic1.convert(microsec0, Ultrasonic::CM); 
long microsec1 = ultrasonic2.timing(); 
float cmMsec1 = ultrasonic2.convert(microsec1, Ultrasonic::CM);
long microsec4 = ultrasonic4.timing(); 
float cmMsec4 = ultrasonic4.convert(microsec4, Ultrasonic::CM);
U1 = cmMsec0;
U2 = cmMsec1;
U4 = cmMsec4;
return U1,U2,U4;
}

//void stopbeep(int timebuzzerOn){
//long currentMillis = millis();
//
//    if(currentMillis - previousMillisBuzzer > timebuzzerOn) {
//        previousMillisBuzzer = currentMillis;
//        analogWrite(buzzerPin, 0);
//
//    }
//}

void beep (int buzzerpwm, int timebuzzerOn)
{
  if (beepdone == 1){
  analogWrite(buzzerPin, buzzerpwm);
  int duree = timebuzzerOn;
  long previousMillisBuzzer = millis();
  beepdone = 0;
  }
  
  }

void stopBeepAtEnd () {
long  currentMillis = millis();
if(currentMillis - previousMillisBuzzer > duree) {
    previousMillisBuzzer = currentMillis;
    analogWrite(buzzerPin, 0);
    beepdone = 1;
  }
}

void rgbled (int pwmred, int pwmgreen, int pwmblue)
{
analogWrite(RedPin,pwmred);
analogWrite(GreenPin,pwmgreen);
analogWrite(BluePin,pwmblue); 
  }

void motor (String motorA, int speedA, String motorB, int speedB)
{
      if (motorA == "forward"){
            analogWrite(speedPinA, speedA);
            digitalWrite(dir1PinA, HIGH);
            digitalWrite(dir2PinA, LOW);
              
      }
      else if (motorA == "backward"){
      analogWrite(speedPinA, speedA);
      digitalWrite(dir1PinA, LOW);
      digitalWrite(dir2PinA, HIGH);  
      }
      else{
        }
      if (motorB == "forward"){
            analogWrite(speedPinB, speedB);
            digitalWrite(dir1PinB, LOW);
            digitalWrite(dir2PinB, HIGH);    
      }
      else if (motorB == "backward"){
      
      analogWrite(speedPinB, speedB);
      digitalWrite(dir1PinB, HIGH);
      digitalWrite(dir2PinB, LOW); 
      }
      else{
        }
    }

void loop() 
{

  if (Serial.available() > 0) {
  lcd.setCursor(0, 0);
  lcd.print("KBOT CONNECTED"); 
  incomingByte = Serial.read();
  //Serial.println(incomingByte, DEC);

  switch (incomingByte)
    {
    case 'L':
      ledcamerablink = 1;
      break;
    case 'Z':
      ledcamerablink = 0;
      digitalWrite(ledCameraPin, LOW);
      previousMillisLED = 0;
      break;
    case 'T':
      ledcamerablink = 0;
      digitalWrite(ledCameraPin, HIGH);
      previousMillisLED = 0;
      break;
    case 'Q':
      digitalWrite(laserPin, HIGH);
      beep(255,500);
      break;
    case 'S':
      digitalWrite(laserPin, LOW);
      
      break;
    case 'A':
      motor("forward",60, "forward",60);
      //beep(255, 2000);
      break;
    case 'B':
      digitalWrite(dir1PinA, LOW);
      digitalWrite(dir2PinA, LOW);
      digitalWrite(dir1PinB, LOW);
      digitalWrite(dir2PinB, LOW);
      break;
    case 'C':
      motor("backward",80, "backward",80);
      break;
    case 'D':
      motor("backward",20, "forward",20);
      break;
    case 'G':
      motor("forward",20, "backward",20);
      break;

      case 'H':
      Serial.println("Mode automatique");
      mode = 1;
      break;
    default:
      Serial.print("commande : ");
      Serial.print(incomingByte);
      break;
    
      }
    
 
 }

if (mode == 1){
      if ( U2 > distanceU2)
      {
      rgbled(0,255,0);
      motor("forward",70, "forward",70);
        } 
      else{
      rgbled(255,0,0);
      motor("backward",70, "backward",70);
      }
}

// Fréquence de rafraichissement des capteurs ultrasons
long currentMillis = millis();
if(currentMillis - previousMillisUltrason > timerefreshUltrason) {
previousMillisUltrason = currentMillis;
ultrason();
}

 currentMillis = millis();
if(currentMillis - previousMillis > timedatasend) {
    previousMillis = currentMillis;  
    //float sondetemperature = temperature();
    float sondetemperature = 35;
    
    Serial.println(sondetemperature);
    Serial.print("U1 : ");
    Serial.println(U1);
    Serial.print("U2 : ");
    Serial.println(U2);
    Serial.print("U4 : ");
    Serial.println(U4);
    Serial.println(capteurIr);
    Serial.println(timerefreshLED);
    }


currentMillis = millis();
if(currentMillis - previousMillisLCD > timerefreshLCD) {
    previousMillisLCD = currentMillis;
    lcd.clear();
    lcd.print("U1 :");  
    lcd.print(U1);
    lcd.setCursor(0, 2) ;
    lcd.print("U2 :");  
    lcd.print(U2);
    lcd.print(" U4 :");
    lcd.print(U4);
    }

currentMillis = millis();
if (ledcamerablink == HIGH){
if(currentMillis - previousMillisLED > timerefreshLED) {
    previousMillisLED = currentMillis;
    if (ledCameraState == LOW) {
      ledCameraState = HIGH;
    } else {
      ledCameraState = LOW;
    }

    digitalWrite(ledCameraPin, ledCameraState);
}
}

//currentMillis = millis();
//if(currentMillis - previousMillisPIR > timerefreshPIR) {
//    previousMillisPIR = currentMillis;
//    capteurIr = digitalRead(capteurIrPin);
//    if (capteurIr==1){//rgbled(255,0,0);
//    
//    }
//    else {
//rgbled(0,255,0);
//      }
//    }

currentMillis = millis();
if(currentMillis - previousMillisRGB > timerefreshRGB) {
  previousMillisRGB = currentMillis;
  rgbled(Sequence[i][0],Sequence[i][1],Sequence[i][2]);
  i++;
  if (i> 6){i=0;}
}
  
stopBeepAtEnd ();
}

    
 


Bien à vous

Bypbop


Problème avec shield servo PCA9685

05 juillet 2016 - 09:29

Bonjour à tous,

 

 

Je travaille en ce moment sur une carte qui traîne depuis lgtps dans les placards, le module pca9685

 

Pour le câblage tout est Ok mais j'ai quelques problèmes inexplicables pour le moment ! dès fois la carte s’emballe est fait n'importe quoi ? les servos se mettent à faire des battements et se mette en butée !! Le courant augmente aussi ...

Je coupe cela redemarre correctement !!

 

 

 

Avez vous eu ce genre prbs avec cette carte ?

 

 

cdlt,

bypbop

 

 

 


Bras robotique OWI 535

30 mai 2016 - 09:15

Pour Info je vends ce bras robotique !! En parfait état ! Expédition en colissimo dans toute la France.

 

bras-robot-arm-edge-owi-535_1.jpg

 

 


Leap Motion et APP

28 mai 2016 - 08:00

Bonjour à tous, 

 

Y a t'il des membres sur le forum qui ont fait des devs avec le Leap Motion ?

 

@ tte,

bypbop