могу ли я установить библиотеки pi подключения на моем настольный ПК с Linux?

У меня есть проект, над которым я работаю, который в конечном итоге будет также Raspberry Pi с Ubuntu, но сейчас я просто хочу написать код, который включает wiringPi.h и wiringSerial. h Я попытался установить wiringpi sudo apt-get install wiringpi , но это явно не включало библиотеки C / C ++ для wiringpi.

как мне установить библиотеки Wiringpi C / C ++ на моем рабочем столе ubuntu? единственное оборудование, которое я использую, - это последовательный порт, проблем с доступным GPIO быть не должно.

Я использую Ubuntu 20.04 focal

3
задан 27 July 2021 в 01:22

1 ответ

Это был комментарий стальных драйверов, который решил эту проблему. sudo apt-get install libwiringpi-dev

Есть некоторые проблемы с libwiringpi-dev. Вы не хотите звонить wiringPiSetup (); вы, вероятно, получите

Oops: Unable to determine board revision from /proc/device-tree/system/linux,revision
or from /proc/cpuinfo
 -> No "Hardware" line
 ->  You'd best google the error to find out why.

. Причина в том, что вы используете ЦП без поддержки ARM, а файл, который он просматривает, отформатирован не так, как ожидалось. К счастью, мне это не нужно, я просто хотел использовать простую библиотеку последовательного порта.

У меня также были проблемы с отправкой данных через serialPuts (), но мне не нужно подтверждать связь ... Я думаю.

Это небольшой проект, который считывает Arduino uno с двумя потенциометрами и кнопкой, цель состоит в том, чтобы использовать потенциометры для рисования изображений на экране или в изображении ...

#include <iostream>
#include <stdio.h>
#include <unistd.h>       //read function
#include <string.h>
#include <wiringSerial.h> //simple serial port library

using namespace std;
//compiled with g++ -Wall -o readSerial   readSerial.cpp -lwiringPi

int main(int argc, char ** argv)
{
    const char *SensorPort = "/dev/ttyACM0"; //Serial Device Address
     
    int levelSensor = serialOpen(SensorPort, 9600);
    //serialPuts(levelSensor, "1"); //Send command to the serial device

    while (1){
        char buffer[100];
        ssize_t length = read(levelSensor, &buffer, sizeof(buffer));
        if (length == -1){
            cerr << "Error reading from serial port" << endl;
            break;
        }
        else if (length == 0){
            cerr << "No more data" << endl;
            break;
        }else{
            buffer[length] = '\0';
            cout << buffer; //Read serial data
        }
    }

    return 0;
}

данные, отправляемые через Arduino использует этот код:

    /*EtchaSketch
     * 2 pots, X,Y, increment
     * 
     * add a button to delete this shtuff
     * This program communicates on the serial port, to a separate program that handles the drawing of received coordinates (pot values).  
    */
    
    int potX = A0;    
    int potY = A1;    
    int sensorValX = 0;  
    int sensorValY = 0;  
    int del = 1;       //a button on pin 1 for deleting drawn content 
    int delbutton = 0;
    void setup() {
        Serial.begin(9600);
        pinMode(del, INPUT);
    }

   void loop() {
      // read the value from the pots:
      if(digitalRead(del) == HIGH ){
          delbutton=1;
          }else{
              delbutton=0;
          }   
      sensorValX = analogRead(potX);
      sensorValY = analogRead(potY);
      Serial.print(sensorValX);
      Serial.print(",");
      Serial.print(sensorValY);
      Serial.print(",");
      Serial.println(delbutton);
      delay(1000);
      }

, и здесь он работает достаточно хорошо, чтобы перейти к программе синтаксического анализа / рисования Reading serial with wiringpi wiringSerial.h

1
ответ дан 28 July 2021 в 11:14

Другие вопросы по тегам:

Похожие вопросы: