2024. április 19., péntek

Gyorskeresés

Útvonal

Cikkek » Számtech rovat

Robot autó építése Raspberry Pi-vel

  • (f)
  • (p)
Írta: |

Szeretnék építeni egy webkamerávavl felszerelt robot autót, amit a Raspberry Pi-vel vezérelnék távolról.

[ ÚJ TESZT ]

A forráskód

A forráskód pedig:

#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <softPwm.h>
#include <termios.h>
#include <unistd.h>

int mygetch( ) {
struct termios oldt,
newt;
int ch;
tcgetattr( STDIN_FILENO, &oldt );
newt = oldt;
newt.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
return ch;
}



int main (void)
{
int enableA = 1;
int enableB = 6;
int h1 = 16;
int h2 = 15;
int h3 = 11;
int h4 = 10;
int speed= 10;
char valasz;
char motor;
char parancs;


if (wiringPiSetup() == -1)
exit (1);




softPwmCreate (enableA,0,255);
softPwmCreate (enableB,0,255);
pinMode (h1, OUTPUT);
pinMode (h2, OUTPUT);
pinMode (h3, OUTPUT);
pinMode (h4, OUTPUT);



while (1){
system( "clear" );
printf("\033[0;36m");
printf ("____________________________________________\n");
printf ("| Raspberry Pi & 2DC motor & L298N & PWM |\n");
printf ("|___________________________________________|\n");
printf("\033[0;37m");
printf ("|Press 1 to select motor 1 |\n");
printf ("|Press 2 to select motor 2 |\n");
printf ("|Press Q to selected motor FORWARD |\n");
printf ("|Press W to selected motor BACKWARD |\n");
printf ("|Press E to selected motor STOP |\n");
printf ("|Press + to SPEED UP |\n");
printf ("|Press - to SPEED DOWN |\n");
printf ("|___________________________________________|\n");

printf ("|Press X to EXIT |\n");
printf ("|___________________________________________|\n");

if(motor == '1') {
printf("\033[0;31m");
printf ("[Motor 1 selected]\n");
}
if(motor == '2') {
printf("\033[0;31m");
printf ("[Motor 2 selected]\n\033[0;31m");
}

if(parancs == 'q') {printf("\033[0;35m");printf ("[FORWARD]\n");}
if(parancs == 'w') {printf("\033[0;35m");printf ("[BACKWARD]\n");}
if(parancs == 'e') {printf("\033[0;35m");printf ("[STOP]\n");}
printf("\033[0;32m");
printf("[Speed: %d]",speed);
printf("\033[0;37m");
printf ("\nYour choice: ");
valasz=mygetch();
printf("\n");
system("clear");

if(valasz == '+') {
if(speed<250) {speed=speed+10;softPwmWrite (enableA, speed);}
}

if(valasz == '-') {
if(speed>0) {speed=speed-10;softPwmWrite (enableA, speed);}
}




if(valasz == '1') {
motor='1';
parancs=' ';
}
if(valasz == '2') {
motor='2';
parancs=' ';
}

if(valasz == 'q') {
parancs='q';
if(motor == '1') {
digitalWrite (h1, 0);
digitalWrite (h2, 1);
softPwmWrite (enableA, speed);
printf ("Motor 1\n");

}
if(motor == '2') {
digitalWrite (h3, 0);
digitalWrite (h4, 1);
printf ("Motor 2\n");

}

printf ("Motor turn FORWARD\n");
}
if(valasz == 'w') {
parancs='w';
if(motor == '1') {
digitalWrite (h1, 1);
digitalWrite (h2, 0);
printf ("Motor 1\n");
softPwmWrite (enableA, speed);

}
if(motor == '2') {
digitalWrite (h3, 1);
digitalWrite (h4, 0);
printf ("Motor 2\n");

}
printf ("Motor turn BACKWARD\n");
}

if(valasz == 'e') {
parancs='e';
if(motor == '1') {
digitalWrite (h1, 1);
digitalWrite (h2, 1);
printf ("Motor 1\n");

}
if(motor == '2') {
digitalWrite (h3, 1);
digitalWrite (h4, 1);
printf ("Motor 2\n");

}

printf ("Motor STOP\n");
}

if(valasz == 'x') {
printf ("EXIT\n");
digitalWrite (h1, 0);
digitalWrite (h2, 0);
digitalWrite (h3, 0);
digitalWrite (h4, 0);
break;
}


}


}

A cikk még nem ért véget, kérlek, lapozz!

Azóta történt

  • Hőmérséklet mérő Pi

    Egy kis bevezető után bemutatom a hőmérséklet mérésének egyszerű megvalósítását Raspberry Pi-al.

  • RF 400R rebuild

    Megszívtam, de túléltem, viszont a vas... De akkor hogyan tovább? Egy partra vetett bálna kalandjai...

Előzmények

Hirdetés

Copyright © 2000-2024 PROHARDVER Informatikai Kft.