Microcontroller (Arduino Nano) für Controller
Achtung: Momentan finden Sie nur den durchkommentierten Code für den Arduino Nano Every, welche der Microcontroller, verbaut in unserem Controller ist. Eine ausführliche Dokumentation folgt künftig.
Hier finden Sie den kompletten Programmcode für den Arduino Nano Every, welcher als Microcontroller in unserem Controller verbaut ist. Dieser sendet mittels NRF-Modul die ausgelesenen Daten vom Drehschalter und Joystick (nur X- und Y-Achse) an den Arduino Uno, der die Steuerung unseres Roboterarms darstellt.
// Programmcode für Arduino Nano Every, Microcontroller des Controllers für Roboterarm. Übernimmt die Rolle des Senders von Daten
// Bibliotheken für das NRF-Modul (NRF24L01)
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(8, 9); // Initialisieren des RF24 Objekts mit CE Pin 8 und CSN Pin 9
int values[3]; // Integer-Array zum Speichern der ausgelesenen Daten von den drei analogen Eingängen
const byte address[6] = "00001"; // Legt den Channel fest auf welchem das NRF-Modul senden soll, der Empfänger muss den gleichen Channel fürs auslesen ausgewählt haben. (Adresse für die Kommunikation, Sender & Empfänger müssen dieselbe Adresse verwenden)
void setup() {
pinMode(3,OUTPUT); // Setzt Pin 3 als Ausgang
Serial.begin(115200); // Initialisiert die serielle Kommunikation mit einer Baudrate von 115200
radio.begin(); // Initialisiert das NRF-Modul
radio.openWritingPipe(address); // Öffnet den Schreibkanal und setzt die Adresse des Empfängers (hier: 00001)
radio.setPALevel(RF24_PA_MIN); // Setzt die Sendeleistung auf Minimum, um Energie zu sparen (da der Arduino Akku-Betrieben ist)
radio.stopListening(); // Stoppt den Empfangsmodus, da dieses Modul nur sendet (der Controller muss nichts empfangen, nur Daten an den Arduino Uno schickenb)
}
void loop() {
digitalWrite(3,HIGH);
// Liest die Werte der analogen Eingänge und speichert sie im Array
values[0] = analogRead(A0); // Der Drehschalter ist am analogen Eingang 0 angeschlossen und wird ausgelesen und der ausgelesene Wert in Index 0 des "values"-Arrays gespeichert
values[1] = analogRead(A1); // Die x-Achse des Joysticks ist am analogen Eingang 1 angeschlossen und wird ausgelesen und der ausgelesene Wert in Index 1 des "values"-Arrays gespeichert
values[2] = analogRead(A2); // Die y-Achse des Joysticks ist am analogen Eingang 2 angeschlossen und wird ausgelesen und der ausgelesene Wert in Index 2 des "values"-Arrays gespeichert
// Gibt die zu sendenden Werte über die serielle Schnittstelle aus (fürs Debugging)
Serial.print("send: ");
for(int i = 2; i>=0; i--){
Serial.print(values[i]);
Serial.print(" ");
}
radio.write(values, sizeof(values)); // Sendet die Werte über das NRF-Modul
Serial.println(); // neue Zeile in der seriellen Ausgabe
}Last updated