มันเป็นความคิดเห็นของไดรเวอร์เหล็กที่แก้ไขได้
sudo apt-get install libwiringpi-dev
มีปัญหาบางอย่างกับ libwiringpi-dev
คุณไม่ต้องการเรียก wirePiSetup(); คุณอาจจะได้
อ๊ะ: ไม่สามารถระบุการแก้ไขบอร์ดจาก /proc/device-tree/system/linux,revision
หรือจาก /proc/cpuinfo
-> ไม่มีบรรทัด "ฮาร์ดแวร์"
-> คุณควร google ข้อผิดพลาดเพื่อหาสาเหตุ
ซึ่งเหตุผลก็คือคุณใช้ CPU ที่ไม่ใช่แบบ arm และไฟล์ที่กำลังดูอยู่นั้นไม่ได้จัดรูปแบบตามที่คาดไว้ โชคดีที่ฉันไม่ต้องการสิ่งนั้น ฉันแค่ต้องการใช้ไลบรารีพอร์ตอนุกรมแบบธรรมดา
ฉันยังมีปัญหาในการส่งข้อมูลผ่าน serialPuts() แต่ฉันไม่จำเป็นต้องจับมือกัน .. ฉันเดา
นี่เป็นโครงการเล็ก ๆ ที่อ่าน Arduino uno ด้วยโพเทนชิออมิเตอร์ 2 ตัวและปุ่ม เป้าหมายคือการใช้หม้อเพื่อวาดภาพบนหน้าจอหรือในรูปภาพ...
#รวมถึง <iostream>
#รวม <stdio.h>
#include <unistd.h> //อ่านฟังก์ชัน
#รวม <string.h>
#include <wiringSerial.h> // ไลบรารีพอร์ตอนุกรมอย่างง่าย
ใช้เนมสเปซ std;
// คอมไพล์ด้วย g++ -Wall -o readSerial readSerial.cpp -lwiringPi
int หลัก (int argc, ถ่าน ** argv)
{
ถ่าน const *SensorPort = "/dev/ttyACM0"; // ที่อยู่อุปกรณ์ซีเรียล
int levelSensor = serialOpen (เซนเซอร์พอร์ต, 9600);
//serialPuts(เซ็นเซอร์ระดับ, "1"); // ส่งคำสั่งไปยังอุปกรณ์อนุกรม
ในขณะที่ (1){
ถ่านบัฟเฟอร์ [100];
ssize_t ความยาว = อ่าน (เซ็นเซอร์ระดับ, &บัฟเฟอร์, ขนาดของ (บัฟเฟอร์));
ถ้า (ความยาว == -1){
cerr << "ข้อผิดพลาดในการอ่านจากพอร์ตอนุกรม" << endl;
หยุดพัก;
}
อื่นถ้า (ความยาว == 0){
cerr << "ไม่มีข้อมูลเพิ่มเติม" << endl;
หยุดพัก;
}อื่น{
บัฟเฟอร์ [ความยาว] = '\0';
ศาล << บัฟเฟอร์; // อ่านข้อมูลอนุกรม
}
}
กลับ 0;
}
ข้อมูลที่ส่งผ่าน Arduino นั้นผ่านรหัสนี้:
/*EtchaSketch
* 2 พอท, X,Y, เพิ่มขึ้น
*
* เพิ่มปุ่มเพื่อลบ shtuff นี้
* โปรแกรมนี้สื่อสารบนพอร์ตอนุกรมไปยังโปรแกรมแยกต่างหากที่จัดการการวาดพิกัดที่ได้รับ (ค่าหม้อ)
*/
int potX = A0;
int potY = A1;
int sensorValX = 0;
เซ็นเซอร์ intValY = 0;
int เดล = 1; // ปุ่มบนพิน 1 สำหรับลบเนื้อหาที่วาด
int delbutton = 0;
การตั้งค่าเป็นโมฆะ () {
Serial.begin(9600);
โหมดพิน (เดล, อินพุต);
}
โมฆะวน () {
// อ่านค่าจากหม้อ:
ถ้า (digitalRead (เดล) == สูง ){
ปุ่มเดล = 1;
}อื่น{
ปุ่มเดล = 0;
}
sensorValX = อะนาล็อกอ่าน (potX);
sensorValY = อะนาล็อกอ่าน (potY);
Serial.print (sensorValX);
Serial.print(",");
Serial.print(sensorValY);
Serial.print(",");
Serial.println (ปุ่มเดล);
ล่าช้า (1,000);
}
และที่นี่มันทำงานได้ดีพอที่จะเข้าสู่โปรแกรมแยกวิเคราะห์ / วาด