คำถามติดแท็ก programming

กระบวนการของการออกแบบและการเขียนซอร์สโค้ดเป็นส่วนหนึ่งของโปรแกรม (หรือร่าง) สำหรับ Arduino สำหรับคำถามเกี่ยวกับการอัปโหลดรหัสไปยังบอร์ด Arduino ให้ใช้แท็ก [อัพโหลด] แทน

20
IDEs อื่นสำหรับ Arduino คืออะไร
Arduino IDE พื้นฐานขาดความซับซ้อนมากมายที่มีอยู่ใน IDE อื่น ๆ เช่นการเติมโค้ดการยุบโค้ดการจัดระเบียบโฟลเดอร์ ฯลฯ มี IDE อื่น ๆ ที่อนุญาตการเขียนโปรแกรมใน C หรือ C ++ และปรับปรุงในด้านเหล่านี้หรือไม่?

4
ฉันจะจัดการโรลโอเวอร์ของ millis () ได้อย่างไร
ฉันต้องอ่านเซ็นเซอร์ทุก ๆ ห้านาที แต่เนื่องจากร่างของฉันมีงานอื่นให้ทำฉันไม่สามารถdelay()อ่านได้ มีการสอนแบบกะพริบโดยไม่ชักช้าแนะนำฉันรหัสตามบรรทัดเหล่านี้: void loop() { unsigned long currentMillis = millis(); // Read the sensor when needed. if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; readSensor(); } // Do other stuff... } ปัญหาคือว่าmillis()จะย้อนกลับไปที่ศูนย์หลังจากประมาณ 49.7 วัน เนื่องจากแบบร่างของฉันมีวัตถุประสงค์เพื่อให้ทำงานได้นานกว่านั้นฉันต้องตรวจสอบให้แน่ใจว่าการวางเมาส์แบบโรลโอเวอร์ไม่ทำให้ร่างของฉันล้มเหลว ฉันสามารถตรวจสอบเงื่อนไขการโรลโอเวอร์ ( currentMillis < previousMillis) ได้อย่างง่ายดายแต่ฉันไม่แน่ใจว่าต้องทำอย่างไร ดังนั้นคำถามของฉัน: อะไรจะเป็นวิธีที่เหมาะสม / ง่ายที่สุดในการจัดการ …

8
ใช้ malloc () และฟรี () เป็นความคิดที่ไม่ดีจริงๆใน Arduino หรือไม่?
การใช้งานmalloc()และfree()ดูเหมือนว่าค่อนข้างหายากในโลก Arduino มันถูกใช้ใน AVR C บริสุทธิ์บ่อยกว่า แต่ก็ยังมีความระมัดระวัง มันเป็นความคิดที่ดีที่จะใช้malloc()และfree()กับ Arduino?

8
การเขียนโปรแกรม Arduino โดยใช้ Python แทนที่จะเป็น C / C ++
ฉันไม่ค่อยชำนาญภาษา C และฉันก็สงสัยว่ามีวิธีที่หลามสามารถใช้โปรแกรม Arduino หรือไม่ สิ่งนี้น่าจะต้องใช้ IDE ที่แตกต่างกันเพื่อให้สามารถดีบักสคริปต์ด้วยตนเองได้

3
ควรใช้ #define หรือ const int สำหรับค่าคงที่หรือไม่
Arduino เป็นลูกผสมที่แปลกประหลาดซึ่งมีการใช้งาน C ++ บางอย่างในโลกที่ฝังตัวซึ่งปกติแล้วคือสภาพแวดล้อม C แท้จริงแล้วรหัส Arduino จำนวนมากนั้นเป็น C มาก C มีการใช้แบบดั้งเดิม#defineสำหรับค่าคงที่ มีสาเหตุหลายประการ: คุณไม่สามารถตั้งค่าขนาดอาร์เรย์const intได้ คุณไม่สามารถใช้const intเป็นป้ายกำกับคำสั่งกรณี (แม้ว่าจะใช้งานได้ในคอมไพเลอร์บางตัว) คุณไม่สามารถเริ่มต้นกับคนอื่นconstconst คุณสามารถตรวจสอบคำถามนี้ใน StackOverflow เพื่อหาเหตุผลเพิ่มเติม ดังนั้นสิ่งที่เราควรใช้สำหรับ Arduino? ฉันมีแนวโน้มที่จะไป#defineแต่ฉันเห็นบางรหัสใช้constและบางคนใช้ผสมผสาน

2
เหตุใดฉันจึงไม่สามารถประกาศคลาสในแท็บอื่นใน Arduino IDE ได้
ฉันต้องการย้ายโค้ดของฉันออกเป็นแท็บที่สองใน Arduino IDE เพื่อให้การจัดระเบียบดีขึ้น ตอนแรกฉันแค่ลองขยับฟังก์ชั่นเท่านั้นและมันก็ใช้ได้ดี ฉันสามารถเรียกใช้ฟังก์ชั่นจากsetup()ฟังก์ชั่นในแท็บหลักของฉันและไม่มีปัญหาในการรวบรวมหรืออัพโหลด อย่างไรก็ตามฉันพยายามใส่ทั้งคลาสลงในแท็บที่สองและทันใดนั้นมันก็ไม่ทำงานอีกต่อไป ตัวอย่างเช่น: แท็บ 1: TestClass obj; void setup() { obj.init(); } void loop() { //... } แท็บ 2: class TestClass { public: void init() { //... } }; เมื่อฉันพยายามรวบรวมสิ่งนี้มันทำให้ฉันมีข้อผิดพลาดดังต่อไปนี้: tab1:1: error: 'TestClass' does not name a type tab1.ino: In function 'void setup()': tab1:5: error: …

3
คลาสและวัตถุ: ฉันต้องใช้ไฟล์ประเภทใดและจำนวนเท่าใด
ฉันไม่เคยมีประสบการณ์กับ C ++ หรือ C มาก่อน แต่รู้วิธีเขียนโปรแกรม C # และเรียนรู้ Arduino ฉันต้องการจัดระเบียบภาพร่างของฉันและค่อนข้างสบายใจกับภาษา Arduino แม้จะมีข้อ จำกัด แต่ฉันอยากจะมีวิธีการเชิงวัตถุในการเขียนโปรแกรม Arduino ของฉัน ดังนั้นฉันเห็นว่าคุณสามารถมีวิธีต่อไปนี้ (ไม่ใช่รายการครบถ้วนสมบูรณ์) เพื่อจัดระเบียบรหัส: ไฟล์. ini ไฟล์เดียว; ไฟล์. in หลายไฟล์ในโฟลเดอร์เดียวกัน (ที่ IDE เรียกและแสดงเช่น "แท็บ") ไฟล์. io ที่มีไฟล์. h และ. cpp ที่รวมอยู่ในโฟลเดอร์เดียวกัน เหมือนข้างบน แต่ไฟล์เป็นไลบรารี่ที่ติดตั้งไว้ในโฟลเดอร์โปรแกรม Arduino ฉันยังได้ยินวิธีต่อไปนี้ แต่ยังไม่ได้ทำงาน: ประกาศคลาส C ++ ในไฟล์. ini ไฟล์เดียว (เคยได้ยิน …
20 programming  c++  class 

13
การอัปโหลด Arduino Nano ให้ข้อผิดพลาด: avrdude: stk500_recv (): โปรแกรมเมอร์ไม่ตอบสนอง
ฉันมีArduino Nano (Sainsmart)ที่ฉันพยายามอัพโหลดภาพร่าง ภายใต้ Arduino IDE Arduino Nano w/ ATmega328อุปกรณ์ที่เลือกเป็น อย่างไรก็ตามการอัพโหลดภาพร่างทำให้ฉันมีข้อผิดพลาด avrdude: stk500_recv(): programmer is not responding ฉันลองทั้งพอร์ต USB ( /dev/tty.usbserial& /dev/cu.usbserial) แต่ข้อผิดพลาดเดิมยังคงอยู่ Arduino เชื่อมต่อกับ Macbook Air ผ่านสาย USB และPWRไฟแสดงสถานะ LED บน Arduino เปิดอยู่และLไฟแสดงสถานะ LED กะพริบ ไม่มีปัญหาในการอัปโหลดไปยัง Arduino Uno ลองหลังจากติดตั้งไดรเวอร์ FTDI ล่าสุด (Mac OSX, x64, v2.2.18, FTDIUSBSerialDriver_10_4_10_5_10_6_10_7.mpkg) จากhttp://www.ftdichip.com/Drivers/VCP.htm อย่างไรก็ตามมันก็ไม่ได้ช่วยอะไร มีอะไรผิดพลาดหรือเปล่า?

2
การวนซ้ำไม่สิ้นสุดภายในลูป () จะทำงานเร็วขึ้นหรือไม่
เมื่อคุณเขียนแบบร่างโดยทั่วไปคุณจะต้องพึ่งพาloop()การถูกเรียกซ้ำ ๆ ตราบใดที่ Arduino ยังทำงานอยู่ การย้ายเข้าและออกจากloop()ฟังก์ชั่นจะต้องแนะนำค่าใช้จ่ายเล็กน้อย เพื่อหลีกเลี่ยงปัญหานี้คุณอาจสร้างวงวนไม่สิ้นสุดของคุณเองเช่นนี้ void loop() { while (true) { // do stuff... } } นั่นเป็นวิธีที่ทำงานได้เพื่อปรับปรุงประสิทธิภาพหรือไม่ มันจะทำให้เกิดปัญหาอื่น ๆ ไหมถ้าloop()ไม่กลับมา?

5
ฉันสามารถรับคืนได้เท่าไหร่ ฉันสามารถรับคืนได้เท่าไหร่ เท่าไหร่ ca! @ # QFSD @ $ RFW
บอร์ด Arduino Uno มี RAM จำกัด ซึ่งหมายความว่ามีสแต็กการโทรที่ จำกัด บางครั้งการเรียกซ้ำเป็นเพียงตัวเลือกด่วนในการใช้อัลกอริทึมที่แน่นอน ดังนั้นเนื่องจาก call stack มีข้อ จำกัด อย่างรุนแรงสิ่งที่จะเป็นวิธีการค้นหาว่ามีบางโปรแกรมที่ทำงานอยู่บนบอร์ดคุณสามารถซื้อได้หลายครั้งก่อนที่จะเกิด stack overflow (และสิ่งเลวร้ายเกิดขึ้น)?
19 programming  sram 

4
ฉันจะประกาศอาร์เรย์ที่มีขนาดตัวแปรได้อย่างไร (ทั่วโลก)
ฉันต้องการสร้างสามอาร์เรย์ที่มีความยาวเท่ากัน ตามเอกสารประกอบอาร์เรย์ต้องถูกกำหนดเป็นint myArray[10];ตำแหน่งที่ 10 สามารถทดแทนความยาวที่รู้จัก (จำนวนเต็มอื่น) หรือเติมด้วยอาเร{2, 3, 5, 6, 7}ย์ แต่เมื่อฉันพยายามที่จะประกาศค่าint arrSize = 10;แล้วอาร์เรย์ขึ้นอยู่กับขนาดที่ฉันได้รับต่อไปนี้:int myArray[arrSize];error: array bound is not an integer constant มีวิธีในการกำหนดขนาดของอาเรย์ที่แตกต่างกันหรือไม่ (ฉันได้รับการสอนการเข้ารหัสฮาร์ดไดรฟ์ไม่ดีและสิ่งที่ต้องหลีกเลี่ยงค่าใช้จ่ายทั้งหมด)

2
จะเกิดอะไรขึ้นเมื่อฉันโทรออก () จากโปรแกรมของฉัน
ในอย่างใดอย่างหนึ่งsetupหรือloopถ้าฉันจะเพิ่มexit(0)สายที่จะควบคุมจะถูกส่งผ่านไป? ไมโครคอนโทรลเลอร์รุ่นต่อไปจะเป็นอย่างไร? มันจะหยุดการทำงานและปิดเครื่องไหม ฉันใช้ตัวแก้ไข Arduino Uno 2

5
มีค่าโสหุ้ยและการพิจารณาอื่น ๆ อะไรบ้างเมื่อใช้ struct กับคลาส
C บนระบบฝังตัวมีแบบดั้งเดิมใช้ structs เพื่อเก็บข้อมูลที่มีโครงสร้าง Arduino นำ C ++ มาไว้ในตารางเพื่อให้เราสามารถใช้คลาสแทนได้ ให้บอกว่าเรามีโครงสร้างข้อมูลที่แตกต่างกันสองแบบซึ่งอาจถือว่าคล้ายกันมาก: typedef struct { int valueOne; int valueTwo; int valueThree; } value_t; และ: class Value { public: int valueOne; int valueTwo; int valueThree; } ในแง่ของความทรงจำสิ่งนี้จะทำให้แตกต่างกันอย่างไร ฉันยังคงเห็นว่ามีการใช้เทคนิคโครงสร้างอย่างหนัก - ทำไมจึงเป็นเช่นนี้

6
Arduino สามารถทดสอบซอร์สโค้ดโดยอัตโนมัติได้อย่างไร (รวมอย่างต่อเนื่อง)
ฉันต้องการจัดการซอร์สโค้ด Arduino ของฉัน (โครงการและห้องสมุด) ภายใต้การควบคุมซอร์สด้วยการทดสอบอย่างต่อเนื่อง ฉันจะรวบรวมรหัสโดยอัตโนมัติด้วยเครื่องมือการรวมอย่างต่อเนื่องเพื่อให้แน่ใจว่าแต่ละรุ่นรวบรวมได้อย่างสมบูรณ์หรือไม่ ในกรณีที่ดีที่สุดเราควรจะสามารถกำหนดค่าบิวด์สำหรับโปรเซสเซอร์หลายตัวเลือกรันการทดสอบหน่วยและตรวจสอบขนาดไบนารี่สูงสุด

5
การแปลงที่เลิกใช้แล้วจากค่าคงที่สตริงเป็น 'char *'
ข้อผิดพลาดนี้หมายความว่าอย่างไร ฉันไม่สามารถแก้ปัญหาในทางใดทางหนึ่ง คำเตือน: การแปลงที่ไม่สนับสนุนจากค่าคงที่สตริงเป็น 'char *' [-Wwrite-strings]

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.