Ich habe 2 Arduinos (1x MEGA2560 und 1x Nano). An den MEGA ist ein Keypad, ein LCD 16x2 mit I2C, ein HC-12 Modul und ein Knopf angeschlossen. An den Nano ist nur ein HC-12 Modul angeschlossen. Dem Plan nach sollte es so gehen: Ich gebe eine Zahl mit dem Keypad bei dem MEGA ein und kann diese Zahl durch drücken des Knopfes über das HC-12 Modul an den Nano schicken. Der Nano soll mir dann diese Zahl über den Seriellen Monitor ausgeben. Bei mir zeigt der serielle Monitor des Nanos (bei egal welcher durch den MEGA abgeschickten Zahl) das an:
Hier ist der Code vom MEGA:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <SoftwareSerial.h>
SoftwareSerial hc12(10,11);
#define BUTTON_PIN 1
LiquidCrystal_I2C lcd(0x27, 16, 2); // initialize the library with the I2C address and dimensions
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {2, 3, 4, 5}; // connect to the row pinouts of the keypad
byte colPins[COLS] = {6, 7, 8, 9}; // connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
String input[3] = {"", "", ""};
int currentMenu = 0;
void setup() {
Serial.begin(9600);
hc12.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
lcd.begin(16, 2);
lcd.backlight();
lcd.print("Manual Mode:");
Serial.println("Hallo");
delay(500);
}
void loop() {
char key = keypad.getKey();
int Btn = digitalRead(BUTTON_PIN);
if (digitalRead(Btn) != 1) {
Serial.println(input[0]);
hc12.println(Serial.read());
Btn = digitalRead(BUTTON_PIN);
}
if (key != NO_KEY) {
if (key == 'D') {
input[currentMenu] = "";
lcd.setCursor(0, 1);
lcd.print(" ");
} else if (key == 'A') {
if (currentMenu > 0) {
currentMenu--;
lcd.setCursor(0, 0);
lcd.print("Manual Mode:");
lcd.setCursor(0, 1);
lcd.print(input[currentMenu]);
}
} else if (key == 'C') {
if (currentMenu < 1) {
currentMenu++;
lcd.setCursor(0, 0);
lcd.print("DMX-Mode: ");
lcd.setCursor(0, 1);
lcd.print(input[currentMenu]);
}
} else if (input[currentMenu].length() < 3) {
input[currentMenu] += key;
lcd.setCursor(0, 1);
lcd.print(input[currentMenu]);
}
}
}
und hier vom Nano:
/* Arduino Long Range Wireless Communication using HC-12
Example 01
by Dejan Nedelkovski, www.HowToMechatronics.com
*/
#include <SoftwareSerial.h>
SoftwareSerial HC12(10, 11); // HC-12 TX Pin, HC-12 RX Pin
void setup() {
Serial.begin(9600); // Serial port to computer
HC12.begin(9600); // Serial port to HC12
}
void loop() {
while (HC12.available()) { // If HC-12 has data
Serial.println(HC12.read()); // Send the data to Serial monitor
}
while (Serial.available()) { // If Serial monitor has data
HC12.write(Serial.read()); // Send that data to HC-12
}
}
Vielen Dank in Voraus!