eine ganz allgemeine Frage. Ich bin natürlich Anfänger und finde nichts in google was zu der allgemeinen Frage passt...
Ich habe ein Sketch den sich auf einem Mac und einem Win 10 Rechner in der Arduino IDE kompilieren und hochladen lässt. Sobald ich es aber auf dem PI 4 unter Raspian in der Arduino IDE kompilieren will findet er eine Stelle in der Library die er nicht gut findet :-).
Kann es sein das der Compiler anders... beschaffen ist oder auf anderem Weg arbeitet. Oder ich mal wieder an der Linux Dateirechte Steuerung scheitere?
Ich teste gerade WLAN und daher macht der Sketch eher keinen Sinn
Sketch:
//#include <printf.h>
#include <nRF24L01.h>
#include <RF24_config.h>
#include <RF24.h>
#include <SPI.h>
RF24 radio (9,8); // CE, CSN
const byte adress[6] = "00001";
const byte adressB[6] = "00002";
String TextUebern;
char textS[12];
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, adress);
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
pinMode(7, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if (radio.available(adress)) {
Serial.println("machIchauchA");
char text[12] = "";
radio.read(&text, sizeof(text));
Serial.println(text);
for (int i = 0; i<12; i++){
textS[i] = text[i];
}
TextUebern = textS[0];
}
if (radio.available(adressB)) {
Serial.println("machIchB");
char textB[20] = "";
radio.read(&textB, sizeof(textB));
Serial.println(textB);
/*
for (int i = 0; i<12; i++){
textS[i] = text[i];
}
TextUebern = textS[0];
*/
}
if (TextUebern == "A"){
Serial.println("mach ich");
digitalWrite(7, HIGH);
delay(100);
digitalWrite(7, LOW);
TextUebern = "x";
}
}
Funktioniert auch ..... aber wie gesagt sobald ich kompiliere, Library ist eingebunden, kommt der Fehler:
WlanBasisEmpf.ino: In function ‘void loop()’:
WlanBasisEmpf.ino:41:29: error: invalid conversion from ‘const byte* {aka const unsigned char*}’ to ‘uint8_t* {aka unsigned char*}’ [-fpermissive]
In file included from WlanBasisEmpf.ino:6:0:
/home/pi/sketchbook/libraries/RF24/RF24.h:551:10: note: initializing argument 1 of ‘bool RF24::available(uint8_t*)’
bool available(uint8_t* pipe_num);
^
WlanBasisEmpf.ino:52:25: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
In file included from /usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h:192:0,
from /usr/share/arduino/libraries/SPI/SPI.h:15,
from WlanBasisEmpf.ino:1:
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:84:11: note: initializing argument 1 of ‘String& String::operator=(const char*)’
String & operator = (const char *cstr);
^
nun habe ich mit meinem geringen Wissen den Eindruck, dass in der Library irgendwas falsch ist, aber das kann ja nicht sein... Könnt Ihr mir nen Denkanstoß geben Ja steht da ... aber ich verstehe es leider nicht.
freejack_:
nun habe ich mit meinem geringen Wissen den Eindruck, dass in der Library irgendwas falsch ist, aber das kann ja nicht sein...
Zunächst einmal kann es erhebliche Unterschiede geben, wie „ein- und derselbe Compiler“ zu unterschiedlichen Urteilen kommen kann. Wenn Du es pingelig genau wissen möchtest, vergleiche die exakten Versionsnummern (z.B. also nicht nur „3“, sondern „3.1.23“).
Obendrein ist es durchaus möglich, dass sich Bibliotheken zwischen Systemen unterscheiden.
Grund: verschiedene Compilerversionen mit verschiedenen Defaultsettings. "char" und "uin8_t" sind zwar gleich, aber wenn die Typprüfung strenger ist, dann sind sie halt ungleich (weil sie nicht gleich heißen).
gregorss:
Zunächst einmal kann es erhebliche Unterschiede geben, wie „ein- und derselbe Compiler“ zu unterschiedlichen Urteilen kommen kann. Wenn Du es pingelig genau wissen möchtest, vergleiche die exakten Versionsnummern (z.B. also nicht nur „3“, sondern „3.1.23“).
Obendrein ist es durchaus möglich, dass sich Bibliotheken zwischen Systemen unterscheiden.
Gruß
Gregor
Danke für den Hinweis, dachte wenn Mac und Win sich verstehen aber ok das hatte ich nicht beachtet und es ist so wie du schreibst, Mac = Arduino 1.8.13 und Raspian = 2:1.0.5+dfsg2-4.1
Das kann man so nicht sagen.
Im c++ Standard kann (je nach Compiler) char signed oder unsigned sein.
Der Wertebereich ist entweder 0 .. 255 oder -128..127, aber es gibt 3 Datentypen, die untereinander unterschiedlich sind. { char / signed char == int8_t / unsigned char == uint8_t }
Für Berechnungen, bei denen es auf Wertebereich/Vorzeichen ankommt, sollte man char also besser nicht verwenden.
( im Gegensatz dazu ist int übrigens definitiv signed, aber mit undefinierter Größe/Wertebereich
Grund: verschiedene Compilerversionen mit verschiedenen Defaultsettings. "char" und "uin8_t" sind zwar gleich, aber wenn die Typprüfung strenger ist, dann sind sie halt ungleich (weil sie nicht gleich heißen).
Hey super, danke zwieblum das werde ich jetzt mal versuchen. Habs mal gespeichert aber bin glaub noch nicht weit genug um das wirklich umsetzen zu können, auch wenn ich da wahrscheinlich grad aus deiner Sicht über ein Streichholz stolpere. Aber hab mir das auf die Lernliste gesetzt. Danke !!
zwieblum:
Schau mal in arduino/hardware/arduino/avr/platform.txt
sorry, das schaue ich wo? *schäm
Aber nochmal danke!!!! Vor allem so schnell und so kompetente Hilfe hatte ich bei meinem ersten Post garnicht erhofft
Da ich noch sehr am Anfang stehe, werde ich erstmal auf den anderen Systemen arbeiten und den PI für später lassen fand die Idee nur so schick aber als WIN und MAC Nutzer auf nen PI wechseln erfordert vom User doch mehr Wissen.
und die Hinweise habe ich mir gemerkt und gehe das nochmal an
Grüße Marco
Grundproblem mit Arduino und RaspberryPi ist, dass die "mitgelieferte" (in den Packetquellen enthaltene) Version der Arduino-IDE meist fürchterlich alt ist. Bis vor kurzem war das noch Version 1.0.5 (aus 2013). Mittlerweile ist glaube ich es 1.6., das ist aber auch nicht besonders neu (aktuell = 1.8.13). Ich rate dringend zu einer aktuell(er)en Version. Das Update geht aber nur indem du dir eine aktuelle Version selbst herunterlädst und über die Kommandozeile selbst installierst (es geht auch nicht über das grafische Tool, dessen Namen mir gerade nicht einfällt). Das ist kein Problem für einen eingefleischten Linux User, aber eine gewisse Hürde für einen Neueinsteiger.
Details siehe z.B. hier: