ברוכים הבאים לשיעור!
השיעור מורכב מסדרה של סרטונים, צפו בהם לפי הסדר.
תהנו 🙂
העתיקו את הקוד מקופסה זו:
/*
* Arduino Wireless Communication Tutorial
* Example 1 - Receiver Code
*
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
* Library: TMRh20/RF24, https://github.com/tmrh20/RF24/
*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(4, 8); // CE, CSN
const byte address[6] = "00001";
void setup() {
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
Serial.println("Listening");
}
void loop() {
if (radio.available()) {
char text[32] = "";
radio.read(&text, sizeof(text));
Serial.println(text);
}
}
העתיקו את הקוד מקופסה זו:
#include <SPI.h>
#include "RF24.h"
extern RF24 radio;
RF24 radio(26,25);
byte address[6] = "00001";
char text[17];
void setup() {
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
}
void loop() {
char text[] = "Hello";
radio.write(&text, sizeof(text));
delay(1000);
}
הקוד הסופי בסרטון:
/*
* Arduino Wireless Communication Tutorial
* Example 1 - Receiver Code
*
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
* Library: TMRh20/RF24, https://github.com/tmrh20/RF24/
*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(4, 8); // CE, CSN
const byte address[6] = "00001";
//LCD
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // If 0x27 is not working use 0x3F
void setup() {
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
Serial.println("Listening");
lcd.init();
// Print a message to the LCD.
lcd.backlight();
}
void loop() {
if (radio.available()) {
char text[32] = "";
radio.read(&text, sizeof(text));
Serial.println(text);
lcd.setCursor(1,0);
lcd.print(text);
}
}
קוד שליחת הודעה בודדת:
#include <SPI.h>
#include "RF24.h"
extern RF24 radio;
RF24 radio(26,25);
byte address[6] = "00001";
char text[17];
void setup() {
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
}
void loop() {
char text[] = "Alex";
radio.write(&text, sizeof(text));
delay(1000);
//Send another message
//Send another message
}
קוד שליחת הודעות על ידי ארדואינו:
/*
* Arduino Wireless Communication Tutorial
* Example 1 - Receiver Code
*
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
* Library: TMRh20/RF24, https://github.com/tmrh20/RF24/
*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(4, 8); // CE, CSN
const byte address[6] = "00001";
//LCD
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // If 0x27 is not working use 0x3F
void setup() {
Serial.begin(9600);
radio.begin();
//radio.openReadingPipe(0, address);
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
Serial.println("Sending");
}
void loop() {
/*
if (radio.available()) {
char text[32] = "";
radio.read(&text, sizeof(text));
Serial.println(text);
lcd.setCursor(1,0);
lcd.print("Alex");
}
*/
char text[] = "1";
radio.write(&text, sizeof(text));
delay(1000);
// Send another message
char text2[] = "2";
radio.write(&text2, sizeof(text2));
delay(1000);
// Send another message
char text3[] = "3";
radio.write(&text3, sizeof(text3));
delay(1000);
}
קוד קבלת הודעות על ידי ESP32:
#include <SPI.h>
#include "RF24.h"
extern RF24 radio;
RF24 radio(26,25);
byte address[6] = "00001";
char text[17];
void setup() {
radio.begin();
//radio.openWritingPipe(address);
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
Serial.begin(9600);
}
void loop() {
if (radio.available())
{
char text[32];
radio.read(&text, sizeof(text));
Serial.println(text);
}
}
פתרון המשימה:
//FastLED
#include <FastLED.h>
#define NUM_LEDS 16
#define DATA_PIN 33
CRGB leds[NUM_LEDS];
#include <SPI.h>
#include "RF24.h"
extern RF24 radio;
RF24 radio(26,25);
byte address[6] = "00001";
char text[17];
void setup() {
//FastLED setup
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
FastLED.setBrightness(50);
radio.begin();
//radio.openWritingPipe(address);
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
Serial.begin(9600);
}
void loop() {
if (radio.available())
{
radio.read(&text, sizeof(text));
Serial.println(text);
if (text[0]=='1')
{
// paint red
for (int i=0 ; i<16 ; i++ )
leds[i] = CRGB::Red;
FastLED.show();
}
if (text[0]=='2')
{
// paint blue
for (int i=0 ; i<16 ; i++ )
leds[i] = CRGB::Blue;
FastLED.show();
}
if (text[0]=='3')
{
// paint green
for (int i=0 ; i<16 ; i++ )
leds[i] = CRGB::Green;
}
}
}