(ラジコンのソースコード メモ)
ラジコンを作るためにスケッチを書いたので忘れないようにここに保存して
おきます。ラジコン本体は、完成したときに掲載しようと思います。
<受信側>
#include<SPI.h>
#include<nRF24L01.h>
#include<RF24.h>
RF24 radio(8, 9);
const byte address[6] = "00001";
const int IN1 = 2;
const int IN2 = 3;
const int IN3 = 4;
const int IN4 = 5;
float OFFSET = 0.05; //5%
int X_pos;
int Y_pos;
int joystick[2];
char receivedData[32] = "";
void setup(){
Serial.begin(9600);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
radio.begin();
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
delay(2000);
}
void loop(){
if (radio.available()) {
radio.read(joystick, sizeof(joystick));
radio.read(&receivedData, sizeof(receivedData));
X_pos = joystick[0];
Y_pos = joystick[1];
Serial.print("X:");
Serial.print(X_pos);
Serial.print(" Y:");
Serial.println(Y_pos);
delay(100);
}
if(X_pos < 512 - 512*OFFSET){ //ジョイスティックを左に倒した時の動作
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
else if (X_pos >= 512 + 512*OFFSET){ //スティックを右に倒した時の動作
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
if(Y_pos <= 512 - 512*OFFSET){ //スティックを上に倒した時の動作
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
else if(Y_pos >= 512 + 512*OFFSET){
// スティックを下に倒したときの動作
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
}
<送信側>
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(8, 9);
const byte address[6] = "00001";
int X_PIN = A0;
int Y_PIN = A1;
int joystick[2];
int X_POS;
int Y_POS;
void setup() {
Serial.begin(9600);
pinMode(X_PIN, INPUT);
pinMode(Y_PIN, INPUT) ;
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
}
void loop() {
joystick[0] = analogRead(X_PIN);
joystick[1] = analogRead(Y_PIN);
radio.write(joystick, sizeof(joystick));
X_POS = analogRead(X_PIN); // X軸方向のアナログ値を読み取る
Y_POS = analogRead(Y_PIN); // Y軸方向のアナログ値を読み取る
Serial.print("X: "); // シリアルモニタにそれぞれの値を出力
Serial.print(X_POS);
Serial.print(" Y: ");
Serial.println(Y_POS);
delay(100);
}
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
}
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(8, 9);
const byte address[6] = "00001";
int X_PIN = A0;
int Y_PIN = A1;
int joystick[2];
int X_POS;
int Y_POS;
void setup() {
Serial.begin(9600);
pinMode(X_PIN, INPUT);
pinMode(Y_PIN, INPUT) ;
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
}
void loop() {
joystick[0] = analogRead(X_PIN);
joystick[1] = analogRead(Y_PIN);
radio.write(joystick, sizeof(joystick));
X_POS = analogRead(X_PIN); // X軸方向のアナログ値を読み取る
Y_POS = analogRead(Y_PIN); // Y軸方向のアナログ値を読み取る
Serial.print("X: "); // シリアルモニタにそれぞれの値を出力
Serial.print(X_POS);
Serial.print(" Y: ");
Serial.println(Y_POS);
delay(100);
}