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

C ++ เป็นภาษามาตรฐานที่ใช้ในการเขียนโปรแกรม Arduino IDE อย่างไรก็ตาม Arduino IDE มีไลบรารีจำนวนมากในตัวดังนั้นฟังก์ชันเช่น "main" จึงไม่ถูกเรียกโดยตรงในโค้ดร่าง โค้ด Arduino ออนไลน์ส่วนใหญ่เขียนด้วยภาษานี้

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

9
C ++ กับภาษา Arduino?
อะไรคือข้อดีของแต่ละภาษาเมื่อใช้ Arduino? ฉันคิดว่านี่เป็นคำถามทั่วไปที่ดี แต่ฉันจะเพิ่มอีกเล็กน้อยเกี่ยวกับสาเหตุที่ฉันถามว่ามีใครต้องการให้คำแนะนำแก่ฉันหรือไม่ ฉันมีประสบการณ์ในภาษาที่ได้รับการประมวลผลล่วงหน้าเช่น JavaScript, PHP และเล่นซอกับภาษาอย่าง Java และ Visual Basic กล่าวอีกนัยหนึ่งฉันรู้เทคนิคการเขียนโปรแกรมและการวางแนววัตถุคลาสสิกและต้นแบบ แต่ไม่มีอะไรเกี่ยวกับการสื่อสารโดยตรงกับฮาร์ดแวร์ ฉันทำอ็อคโทคอปเตอร์และฉันคิดว่าวิธีการเชิงวัตถุจะง่ายที่สุด (ซอฟต์แวร์จะมีคุณสมบัติมากมาย ... ) แต่ฉันไม่เคยเขียนใน C ++ เนื่องจากนี่เป็นเว็บไซต์ถามตอบที่ควรช่วยเหลือผู้อื่นคำถามทั่วไปที่นำเสนอในตอนแรกจึงมีความสำคัญมาก แต่ฉันขอขอบคุณสำหรับความคิดเห็นใด ๆ เกี่ยวกับสถานการณ์ของฉัน
81 c++  arduino-ide 

1
คุณใช้ SPI บน Arduino ได้อย่างไร
อ้างอิงถึง Arduino Uno, Mega2560, Leonardo และบอร์ดที่คล้ายกัน: SPI ทำงานอย่างไร SPI เร็วแค่ไหน ฉันจะเชื่อมต่อระหว่างนายกับทาสได้อย่างไร? ฉันจะสร้างทาส SPI ได้อย่างไร โปรดทราบ: นี่เป็นคำถามสำหรับการอ้างอิง

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

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

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; } ในแง่ของความทรงจำสิ่งนี้จะทำให้แตกต่างกันอย่างไร ฉันยังคงเห็นว่ามีการใช้เทคนิคโครงสร้างอย่างหนัก - ทำไมจึงเป็นเช่นนี้

1
การสื่อสารแบบอนุกรมทำงานบน Arduino อย่างไร
อ้างอิงถึง Arduino Uno, Mega2560, Leonardo และบอร์ดที่คล้ายกัน: การสื่อสารแบบอนุกรมทำงานอย่างไร ซีเรียสนั้นเร็วแค่ไหน? ฉันจะเชื่อมต่อระหว่างผู้ส่งและผู้รับได้อย่างไร โปรดทราบ: นี่เป็นคำถามอ้างอิง

1
เหตุใดคำสั่ง IF ของฉันจึงไม่เห็นทั่วโลก
ฉันค่อนข้างใหม่กับการเขียนโปรแกรม Arduino ฉันมีปัญหาในการรวบรวมโค้ดต่อไปนี้: const int relay1 = 10; //Power Relay 1 const int relay2 = 11; //Power Relay 2 const int relay3 = 12; //Toggle Relay const int button1 = 3; const int button2 = 4; const int button3 = 5; //---Button States---\\ int button1State; //Current state of Button 1 …

4
มีการตั้งค่าและลูปเพื่อความสะดวกหรือไม่
Arduino ภาพร่างมักจะมีคุณสมบัติsetupและloopฟังก์ชั่น ฟังก์ชั่นเหล่านี้มีไว้เพื่อความสะดวกเท่านั้นหรือมีวัตถุประสงค์พิเศษจริง ๆ หรือไม่? (เช่น: เป็นการดำเนินการบางอย่างที่ไม่อนุญาตหรืออนุญาตในการตั้งค่าและลูป) โค้ดสองชิ้นนี้เทียบเท่าหรือไม่: คลาสสิก void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); } ไม่มีลูป void setup() { pinMode(LED_BUILTIN, OUTPUT); while(true) { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); } } void loop() { } เป็นไปได้หรือไม่ที่จะเขียนโค้ดโดยไม่ต้องตั้งค่าหรือวนรอบตัวอย่างเช่นmainวิธีการหรือจุดเข้าใช้งานอื่น ๆ
13 programming  c++ 

3
ฟังก์ชั่นกับพารามิเตอร์สตริง
ภายในลูปหลักของฉันมีสตริงนี้: String string1; ฉันมีฟังก์ชั่นที่จะใช้ string1 เป็นพารามิเตอร์และใช้มันเพื่อส่งสตริงนี้เป็น SMS sendSMS(string1); นี่คือฟังก์ชัน sendSMS () (ไม่มีพารามิเตอร์): void sendSMS() { sms.beginSMS(remoteNumber); sms.print(finalstr); sms.endSMS(); lcd.setCursor(0, 0); lcd.print("Message sent!"); delay(10000); } คำถามของฉันคือ: ฉันจะวางพารามิเตอร์อินพุตสตริงใน sendSMS ได้อย่างไร ฉันจำเป็นต้องใช้ฟังก์ชั่นต้นแบบสำหรับ sendSMS () หรือไม่? (เพื่อให้มันปรากฏสามครั้ง, 1 ในต้นแบบ, 1 ในการประกาศและอีกหนึ่งในการโทร) หรือฉันไม่ต้องการใช้ฟังก์ชั่นต้นแบบก่อนลูปหลัก ()?
11 programming  c++ 

1
การขัดจังหวะทำงานบน Arduino Uno และบอร์ดที่คล้ายกันอย่างไร
โปรดอธิบายวิธีการขัดจังหวะการทำงานกับ Arduino Uno และบอร์ดที่เกี่ยวข้องโดยใช้โปรเซสเซอร์ ATmega328P บอร์ดเช่น: Uno มินิ นาโน Pro Mini Lilypad โดยเฉพาะอย่างยิ่งโปรดหารือ: สิ่งที่จะใช้ขัดจังหวะ วิธีการเขียน Interrupt Service Routine (ISR) ปัญหาเรื่องเวลา ส่วนที่สำคัญ การเข้าถึงข้อมูลของอะตอม หมายเหตุ: นี่เป็นคำถามอ้างอิง

2
ฉันจะแปลง float เป็น char * ได้อย่างไร
ถามคำถามเกี่ยวกับการแลกเปลี่ยนกองวิศวกรรมไฟฟ้าและได้ที่นี่: สวยด้วยตนเองอธิบาย ฉันจะเปลี่ยนแปลงให้เป็น char * ได้อย่างไร? ฉันมีรหัสที่ 'ความต้านทาน' แบบลอยได้รับการปรับปรุงอยู่ตลอดเวลา ฉันต้องการจะอัปเดตตัวแปร 'ผลลัพธ์' เพื่อรับค่าของ 'ความต้านทาน' นี่คือรหัสบางส่วนในกรณีที่ช่วย: const char * result = ""; float resistance = 2.5; result = resistance; //This bit (obviously) doesn't work ขอบคุณสำหรับความช่วยเหลือของคุณ!
11 arduino-uno  c++  c  float 

2
Arduino Sketch จะรวบรวมโดยตรงกับ GCC-AVR หรือไม่
เอาล่ะเราทุกคนได้เห็นคำถามเหล่านั้นทั่วทั้งเว็บเช่น Arduino vs C ++ หรือคำถามที่คล้ายกันอื่น ๆ และคำตอบส่วนใหญ่ไม่ได้สัมผัสความแตกต่างในการรวบรวมนอกเหนือจากข้อมูลที่เป็นนามธรรม คำถามของฉันมีจุดมุ่งหมายเพื่อแก้ไขความแตกต่างที่เกิดขึ้นจริง (ไม่ใช่การกำหนดค่าตามความชอบ) ในการเปลี่ยนชื่อไฟล์. ori เป็นไฟล์. cpp หรือนามสกุลไฟล์อื่น ๆ ที่คล้ายกันสำหรับ c ++ จะรวบรวมโดยใช้ GCC-AVR ฉันรู้ว่าอย่างน้อยคุณต้องรวมไฟล์ส่วนหัวของ Arduino แต่นอกเหนือจากนั้นสิ่งที่จะทำให้เกิดข้อผิดพลาดในการรวบรวมถ้ารวบรวมกล่าวว่า. ini ไปยังไฟล์. cpp โดยใช้พูดเช่น GCC-AVR เพื่อความเรียบง่ายลองใช้ตัวอย่างการกะพริบแบบคลาสสิคเพื่ออธิบายความแตกต่าง หรือหากคุณมีข้อมูลโค้ดที่ดีกว่าในการใช้โปรดรวมตัวอย่างไว้ในคำตอบและอธิบายความแตกต่างอย่างละเอียด โปรดอย่าแสดงความคิดเห็นว่าวิธีใดเป็นวิธีที่ดีกว่าหรือเครื่องมือที่จะใช้ FYI ฉันใช้ Platformio เพื่อการพัฒนาและฉันสังเกตเห็นกระบวนการแปลงที่เกิดขึ้นเบื้องหลังในระหว่างการรวบรวม ฉันพยายามเข้าใจสิ่งที่เกิดขึ้นจริงที่นั่นดังนั้นเมื่อฉันรหัสใน Arduino ฉันเข้าใจรุ่น C ++ ที่ "บริสุทธิ์" เช่นกัน ขอบคุณสำหรับคำตอบที่รอบคอบของคุณสำหรับคำถามของฉันล่วงหน้า

3
วิธีการเขียนภาพร่างที่เข้ากันได้กับ makefile?
ฉันต้องการเขียนภาพร่างของฉันเพื่อให้ฉันสามารถสร้าง / อัปโหลดโดยใช้ Arduino IDE หรือเลือกที่จะใช้ GCC และ makefile ก็ได้ ฉันรู้เกี่ยวกับการรวมฟังก์ชั่นการประกาศที่ด้านบน แต่มีอะไรอีกที่ต้องทำเพื่อให้ร่างของฉันได้รับการพิจารณา C ++ ที่ถูกต้องโดยคอมไพเลอร์ของฉัน อัปเดต 1 การทำความเข้าใจกับสิ่งที่ Arduino IDE ทำกับไฟล์. iino และ. pde นั้นใช้ได้ แต่ไม่เกี่ยวข้องกับคำถามของฉันดังนั้นนี่จึงไม่ใช่สิ่งที่ซ้ำกัน สิ่งที่ฉันต้องการรู้คือ "ฉันจะเขียนโปรแกรมอย่างไรเพื่อให้ถือว่าถูกต้องทั้งโดย Arduino IDE และ g ++ makefile อย่างเป็นทางการ (?) มีอยู่ที่นี่อธิบายว่าต้องทำอย่างไรถ้าใช้ makefile แทน IDE: # The Arduino environment does preliminary processing on a sketch …

2
เหตุใดจึงมีเพียง 2 ไบต์เท่านั้น
เมื่อใช้ C / C ++ บนแพลตฟอร์มอื่น ๆintโดยทั่วไปจะเป็นประเภท 4 ไบต์ (หรือมากกว่านั้น) อย่างไรก็ตามบน Arduino มันมีเพียง 2 ไบต์ ทำไมถึงแตกต่าง มันส่งผลกระทบต่อประสิทธิภาพการทำงานหรือไม่ถ้าฉันใช้ 4 ไบต์longแทน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.