Get the Flash Player to see this player.

time2online Joomla Extensions: Simple Video Flash Player Module
Soft PWM i Bluetooth

Program działa tak jak na załączonym filmiku. Zasada działania jest prosta. Pobierane są dane z telefonu komórkowego z androidem za pomocą bluetooth w formacie np." X=-3;Y=9;\r\n". Z tego stringa pobieramy współrzędne X i Y, konwertujemy na int, a następnie wysyłamy je na odpowiednie piny w Raspberry Pi jako software pwm.  Wystarczy stworzyć plik pwm.c i wpisać w nim taki kod:

/*
 *
 *      Simple test program to test the wiringPi functions
 *      Soft PWM
 */

#include <wiringPi.h>

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <unistd.h>
#include <softPwm.h>

int main (void)
{

 int i =0;
 char path [50]="";
 FILE *fd;
 char bufor [12]="";
 char tempX[1]="";
 char tempY[1]="";
 int x=0;
 int y=0;

 strcat (path,"/dev/rfcomm0");
 fd = fopen(path,"r");

 if(!fd){
 printf("blad przy otwieraniu");
 return -1;
 }else{

 printf ("Raspberry Pi wiringPi PWM i bluetooth dla silnikow \n") ;

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

 softPwmCreate(0,0,9);
 softPwmCreate(1,0,9);
 

 for (;;)
 {
 if(!fgets(bufor,11,fd)){
 printf("blad odczytu pliku");
 return -1;
 }else{
 //printf(bufor);
 //napis jest w postaci X=-2;Y=9;\r\n
 for(i=0;i<12;i++){
 if(bufor[i]=='X'){
 if(bufor[i+2]=='-'){
 tempX[0]=bufor[i+2];
 tempX[1]=bufor[i+3];
 }else{
 tempX[1]=bufor[i+2];
 tempX[0]='0';
 }
 }
 if(bufor[i]=='Y'){
 if(bufor[i+2]=='-'){
 tempY[0]=bufor[i+2];
 tempY[1]=bufor[i+3];
 }else{
 tempY[1]=bufor[i+2];
 tempY[0]='0';
 }
 }
 }
 printf("X=");
 printf(tempX);
 printf("Y=");
 printf(tempY);
 printf("\r\n");
 x=atoi(tempX);
 y=atoi(tempY);

 }
 if(x>0){    
 softPwmWrite (0, x) ;
 }
 if(x<=0){
 softPwmWrite (0, 0) ;
 softPwmWrite(1,0);

 }
 if(x<0){
 softPwmWrite (1, abs(x)) ;
 }
 delay (1) ;

 }

 return 0 ;
 }
 fclose(fd);
}