A fost comentariul șoferilor din oțel, care a rezolvat-o.
sudo apt-get install libwiringpi-dev
Există unele probleme cu libwiringpi-dev.
Nu doriți să apelați wiringPiSetup(); probabil vei primi
Hopa: nu se poate determina revizuirea plăcii din /proc/device-tree/system/linux,revision
sau din /proc/cpuinfo
-> Fără linie „Hardware”.
-> Cel mai bine ar fi să căutați pe google eroarea pentru a afla de ce.
motivul este că utilizați un procesor care nu este bazat pe armă, iar fișierul pe care îl privește nu este formatat așa cum se așteaptă. din fericire, nu am nevoie de nimic din toate astea, am vrut doar să folosesc biblioteca simplă de porturi serial.
De asemenea, am avut probleme cu trimiterea datelor prin serialPuts(), dar nu trebuie să fac strângerea de mână.. Presupun.
Acesta este un mic proiect care citește un Arduino uno cu 2 potențiometre și un buton, scopul este de a folosi potele pentru a desena imagini pe un ecran, sau într-o imagine...
#include <iostream>
#include <stdio.h>
#include <unistd.h> //funcția de citire
#include <șir.h>
#include <wiringSerial.h> //bibliotecă simplă de porturi serial
folosind namespace std;
//compilat cu g++ -Wall -o readSerial readSerial.cpp -lwiringPi
int main(int argc, char ** argv)
{
const char *SensorPort = "/dev/ttyACM0"; //Adresa dispozitivului serial
int levelSensor = serialOpen(SensorPort, 9600);
//serialPuts(levelSensor, "1"); //Trimite comanda către dispozitivul serial
în timp ce (1){
char buffer[100];
ssiize_t length = read(levelSensor, &buffer, sizeof(buffer));
dacă (lungime == -1){
cerr << "Eroare la citirea de pe portul serial" << endl;
pauză;
}
else if (lungime == 0){
cerr << „Fără date” << endl;
pauză;
}altfel{
buffer[lungime] = '\0';
cout << buffer; //Citiți datele seriale
}
}
întoarce 0;
}
datele trimise prin Arduino sunt prin acest cod:
/*EtchaSketch
* 2 oale, X,Y, increment
*
* adăugați un buton pentru a șterge acest lucru
* Acest program comunica pe portul serial, cu un program separat care se ocupa de desenarea coordonatelor primite (valori pot).
*/
int potX = A0;
int potY = A1;
int sensorValX = 0;
int sensorValY = 0;
int del = 1; //un buton pe pinul 1 pentru ștergerea conținutului desenat
int delbutton = 0;
void setup() {
Serial.begin(9600);
pinMode(del, INPUT);
}
void loop() {
// citește valoarea din poturi:
if(digitalRead(del) == HIGH ){
delbutton=1;
}altfel{
delbutton=0;
}
sensorValX = analogRead(potX);
sensorValY = analogRead(potY);
Serial.print(senzorValX);
Serial.print(",");
Serial.print(sensorValY);
Serial.print(",");
Serial.println(delbutton);
întârziere (1000);
}
și aici funcționează suficient de bine pentru a intra în programul de analiză/desenare