IX Kayra
Centipat
Daha fazla
- Cinsiyet
- Erkek
- Meslek
- Öğrenci
Merhaba, kolay gelsin. İnternet de görüp heves ettiğim bir projeydi. Arduino ile yapılan arabayı ivme ölçer kullanarak el hareketleri ile yönetme aşamasını tamamladım. Ama burada bırakmak istemiyorum. Önüne engel çıkınca eldivenin titremesini istiyorum. Bunun için arabaya ultrasonik mesafe sensörü ekledim (hc SR04). Eldiven ile araba iletişimini NRF24L01 ile yapıyordum ama arabadan eldivene mesafe sensöründeki veriyi gönderemiyorum. Kodlarda hata yapmış olabilirim. Hem araba hem de eldiven için kullandığım kodları ekliyorum.
Kod:
//Araba.
#include <SPI.h>
#include "RF24.h"
#include "I2Cdev.h"
int led = 4;
int echoPin = 2;
int trigPin = 3;
const int enbA = 3;
const int enbB = 5;
const int IN1 = 2; //Right Motor (-)
const int IN2 = 4; //Right Motor (+)
const int IN3 = 7; //Left Motor (+)
const int IN4 = 6; //Right Motor (-)
int RightSpd = 130;
int LeftSpd = 150;
int data[2];
int veri, olcum;
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
const uint64_t pipes = 0xF0F0F0F0D2LL;
void setup(){
pinMode(enbA, OUTPUT);
pinMode(enbB, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(led, OUTPUT);
Serial.begin(9600);
Serial.println(veri);
delay(50);
Wire.begin();
radio.begin();
radio.openReadingPipe(1, pipe);
radio.openWritingPipe(pipes);
radio.startListening();
}
void loop(){
if (radio.available()){
radio.read(data, sizeof(data));
if(data[0] > 380){
analogWrite(enbA, RightSpd);
analogWrite(enbB, LeftSpd);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
if(data[0] < 310){
analogWrite(enbA, RightSpd);
analogWrite(enbB, LeftSpd);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
if(data[1] > 180){
analogWrite(enbA, RightSpd);
analogWrite(enbB, LeftSpd);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
if(data[1] < 110){
analogWrite(enbA, RightSpd);
analogWrite(enbB, LeftSpd);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
if(data[0] > 330 && data[0] < 360 && data[1] > 130 && data[1] < 160){
analogWrite(enbA, 0);
analogWrite(enbB, 0);
}
if(veri<30)
{
digitalWrite(led,LOW);
}
else.
{
digitalWrite(led, HIGH);
}
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
olcum = pulseIn(echoPin, HIGH);
veri = olcum / 58.2;
delay(50);
radio.write(veri, sizeof(veri));
}
}
Kod:
//Eldiven.
#include <SPI.h>
#include "RF24.h"
#include "Wire.h"
#include "I2Cdev.h"
#include "MPU6050.h"
int titresim;
MPU6050 mpu;
int16_t ax, ay, az;
int16_t gx, gy, gz;
int data[2];
int veri;
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
const uint64_t pipes =0xF0F0F0F0D2LL;
void setup(void){
Serial.begin(9600);
Serial.println(veri);
delay(50);
Wire.begin();
mpu.initialize();
radio.begin();
radio.openWritingPipe(pipe);
radio.openReadingPipe(1, pipes);
}
void loop(void){
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
data[0] = map(ax, -17000, 17000, 300, 400 );
data[1] = map(ay, -17000, 17000, 100, 200);
radio.write(data, sizeof(data));
if (radio.available()){
radio.read(veri, sizeof(veri));
if(veri!=0)
{
digitalWrite(titresim, LOW);
if(veri <50)
{
digitalWrite(titresim, HIGH);
}
else.
{
digitalWrite(titresim, LOW);}
}
}
}