Arduino

คำถาม & คำตอบสำหรับนักพัฒนาซอฟต์แวร์และซอฟต์แวร์โอเพ่นซอร์สที่เข้ากันได้กับ Arduino

2
มีขีด จำกัด ว่าในปัจจุบันจำนวนพินจะจมหรือไม่
ฉันกำลังทดลองกับเมทริกซ์ LED 8x8 ที่ควบคุมโดย Arduino Uno อย่างที่ฉันคิดว่าเป็นเรื่องปกติเมทริกซ์ใช้ขั้วบวกทั่วไปสำหรับแต่ละแถวและแคโทดทั่วไปสำหรับแต่ละคอลัมน์ ในตอนนี้ฉันมีหมุดเมทริกซ์ทั้งหมดที่เชื่อมต่อโดยตรงกับหมุด IO บน Uno และฉันไม่ได้มีปัญหาใด ๆ ในการให้แสง LEDs ทีละตัว การผ่านเมทริกซ์ทั้งหมดเช่นนี้ทำให้การอัปเดตช้าลงเล็กน้อยซึ่งหมายความว่าไฟ LED ไม่สว่างเท่าที่ฉันต้องการ เท่าที่ฉันรู้ฉันไม่สามารถส่องสว่างทั้งแถวในคราวเดียวได้อย่างปลอดภัยเพราะพินแต่ละอันบน Uno ไม่สามารถจัดหากระแสไฟได้เพียงพอที่จะขับ LED 8 ดวงแยกกันในเวลาเดียวกัน (ต้องการอย่างน้อย 10mA จะสว่างพอ) มันเกิดขึ้นกับฉันว่าการย้อนกลับอาจปลอดภัยกว่า หากฉันสว่างขึ้นทั้งคอลัมน์ในแต่ละครั้งแต่ละพินจะต้องมีแหล่งกำเนิดกระแสเพียงพอสำหรับ LED หนึ่งอันซึ่งน่าจะไม่มีปัญหา อย่างไรก็ตามมันขึ้นอยู่กับหนึ่งพินที่อาจทำให้กระแสจาก 8 ทั้งหมดรวมกันอย่างน้อย 80mA เป็นไปได้หรือฉันจะทอดบอร์ดของฉัน

2
โพสต์ข้อมูลไปยังบริการเว็บจาก Arduino
หากคุณต้องการส่งข้อมูลเซ็นเซอร์เช่นอุณหภูมิไปยังเซิร์ฟเวอร์ / ฐานข้อมูลระยะไกลในบางแห่งคุณต้องใช้การโทรบางชนิดไปยังเว็บเซิร์ฟเวอร์เนื่องจากไม่สามารถเชื่อมต่อโดยตรงกับฐานข้อมูลจาก Arduino คุณโพสต์ข้อมูลไปยังบริการเว็บ JSON จาก Arduino ที่เชื่อมต่อกับอินเทอร์เน็ตได้อย่างไร

3
NodeMCU - หมุด Vin เป็นเอาต์พุต 5V หรือไม่
ฉันรู้ว่า Vin สามารถใช้เพื่อเพิ่มกำลังให้กับบอร์ดได้ แต่ได้อ่านมาว่ามันสามารถใช้เป็นเอาต์พุต 5V ได้ เป็นไปได้ไหมที่จะกำหนดให้ Vin เป็นเอาท์พุทเหมือนกับที่ฉันต้องการ GPIO อื่น ๆ ? ถ้าฉันต้องการพลังงาน LED จาก GPIO 12 ฉันจะกำหนด GPIO: const int LEDpin_0 = 12; // D6, LED power pin ... และในการตั้งค่า: pinMode(LEDpin_0, OUTPUT); ฉันสามารถเปิดและปิดไฟ LED ตามว่า GPIO 12 ไปสูงหรือต่ำ ฉันสามารถทำเช่นเดียวกันกับ Vin ได้โดยไม่ต้องใช้รีเลย์หรือฮาร์ดแวร์อื่น ๆ ได้หรือไม่?
13 pins  nodemcu  voltage 

4
รับตัวเลขสุ่มอย่างแท้จริงใน Arduino
อะไรคือวิธีที่ดีที่สุดในการรับจำนวนสุ่มอย่างแท้จริง (ตรงข้ามกับหลอก) ใน Arduino หรืออย่างน้อยที่สุดก็ประมาณที่ดีที่สุด? จากความเข้าใจของฉันฟังก์ชั่น randomSeed (analogRead (x)) มันไม่สุ่มพอ หากเป็นไปได้ควรใช้วิธีการตั้งค่า Arduino พื้นฐานเพียงอย่างเดียว (ไม่มีเซ็นเซอร์เพิ่มเติม) โซลูชั่นที่มาพร้อมกับเซ็นเซอร์ภายนอกสามารถใช้ได้หากพวกเขาปรับปรุงการสุ่มอย่างมีนัยสำคัญมากกว่าการตั้งค่าพื้นฐาน

4
ESP8266 Arduino IDE เทียบกับ Lua
ฉันวางแผนที่จะซื้อ ESP8266 ฉันจำเป็นต้องเรียนรู้ Lua ให้เล่นด้วยจริงหรือไม่? ฉันเคยเห็นบางคนใช้กับ Arduino IDE มาตรฐาน คุณต้องการเฟิร์มแวร์ที่กำหนดเองเพื่อใช้ Arduino IDE แทน Lua หรือไม่? Arduino IDE นั้นดูดีกว่าสำหรับฉันเพราะฉันรู้จักไวยากรณ์แล้ว มีข้อเสียในการใช้ Arduino IDE แทน NodeMCU กับ Lua หรือไม่?

3
ใช้ millis () และ micros () ภายในรูทีน interrupt
เอกสารสำหรับattachInterrupt()พูดว่า: ... millis()อาศัยการขัดจังหวะในการนับดังนั้นมันจะไม่เพิ่มขึ้นภายใน ISR เนื่องจากdelay()ต้องการการขัดจังหวะในการทำงานมันจะไม่ทำงานหากเรียกภายใน ISR micros()ทำงานในขั้นต้น แต่จะเริ่มทำงานผิดปกติหลังจาก 1-2 ms ... วิธีการที่ไม่micros()แตกต่างจากmillis()(ยกเว้นของหลักสูตรเพื่อความแม่นยำของพวกเขา)? คำเตือนข้างต้นหมายความว่าการใช้micros()ภายในรูทีนการขัดจังหวะเป็นความคิดที่ไม่ดีอยู่เสมอ บริบท - ฉันต้องการวัดอัตราการเต้นของชีพจรต่ำดังนั้นฉันจึงต้องทริกเกอร์รูทีนเมื่อสัญญาณอินพุทของฉันเปลี่ยนแปลงและบันทึกเวลาปัจจุบัน

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

5
Arduino: วิธีรับบอร์ดในโค้ด
ฉันต้องการเขียนภาพร่างที่สามารถรวบรวมได้บนบอร์ด Arduino ที่แตกต่างกัน ฉันต้องการที่จะแสดงบนพีซีที่บอร์ดเชื่อมต่ออยู่ในปัจจุบัน ซึ่งหมายความว่าผู้ใช้เชื่อมต่อพีซีผ่านสาย USB ไปยังบอร์ด Arduino / Teensy ซึ่งใช้งานสเก็ตช์ของฉันและสเก็ตช์ของฉันบอกพีซีผ่านทางอนุกรมที่บอร์ดเชื่อมต่ออยู่ บนพีซีรันแอปพลิเคชัน C # ของฉันซึ่งรับข้อมูลนี้และแสดงผล ดังนั้นฉันต้องการกระดานที่ได้รับการคัดเลือกเมื่อร่างได้รวบรวม: ฉันพบรหัสในhttps://github.com/backupbrain/ArduinoBoardManager แต่ไม่ได้ให้ผลลัพธ์ที่ถูกต้อง (นอกเหนือจากความจริงที่ว่ามีหลายแผงขาดหายไป) นี่คือตัวอย่างจากรหัส: static const uint8_t BOARD_MICRO= 0x04; .... #elif defined(__AVR_Atmega32U4__) // Yun 16Mhz, Micro, Leonardo, Esplora static const uint8_t BOARD = 0x04; static const uint8_t NUM_BITS = 8; static const uint16_t CPU …
13 c 

1
ฉันสามารถอัปโหลดโปรแกรมหรือร่างภาพไปยัง Arduino Uno Clone Board ได้กี่ครั้ง
ฉันกำลังจะทำงานในโครงการแรกของฉันโดยใช้ arduino (ฉันกำลังจะซื้อหนึ่งสัปดาห์ถัดไป) และหนึ่งในอาจารย์ของเราบอกว่าเราสามารถอัปโหลดโปรแกรมหรือร่างใน Arduino Uno Board ได้ประมาณ 8 ครั้ง . เขายังเสริมด้วยว่าถ้าเราใช้รุ่นโคลนมันจะสามารถอัปโหลดแบบร่างได้เพียง 2 ครั้งเท่านั้น เรื่องนี้เป็นเรื่องจริงหรือว่าเขาพูดป่าว? ขอบคุณล่วงหน้า.

4
ส่วนประกอบ Arduino บางอย่างดูเหมือนว่าราคาถูกมาก
โปรเจคของฉันคืออุปกรณ์ที่ใช้ Arduino ซึ่งบรรจุอยู่ในกล่อง มันจะต้องใช้ข้อมูลความเร็วละติจูดลองจิจูดและระดับความสูงเพื่อบันทึกเนินเขาที่ตรวจพบใน SD เมื่อกดปุ่มจะต้องอัปโหลดข้อมูลฮิลล์ไปยังเซิร์ฟเวอร์ผ่าน Wi-Fi ฉันต้องการรายการต่อไปนี้: โมดูล GPS + เสาอากาศ โมดูล WiFi โมดูล SD เครื่องวัดระยะสูง การ์ด microSD สวิตช์แบบอินไลน์สำหรับแบตเตอรี่ของฉัน ค่าใช้จ่าย? บน Pi Hut ราคา 120 ปอนด์ GPS = https://thepihut.com/products/sim808-gps-gprs-gsm-shield-for-arduino = £ 42 WiFi = https://thepihut.com/products/wifi-shield-v3-for-arduino-rpsma-802-11b-gn = £ 54 SD = https://thepihut.com/products/microsd-card-module-for-arduino = £ 6 การ์ด microSD = https://thepihut.com/products/blank-micro-sd-cards (4GB) …
12 arduino-uno  gps 

3
วิธีเพิ่มความเร็วในการเขียนการ์ด SD ใน arduino
ฉันสร้างระบบตัวบันทึกข้อมูลซึ่งบันทึกข้อมูลในการ์ด SD ด้วยความเร็วสูงประมาณ 20,000-300,000 ไบต์ต่อวินาที แต่ปัจจุบันห้องสมุด SD ใน arduino เขียนข้อมูลอยู่ที่ประมาณ 4500-5,000 ไบต์ต่อวินาทีซึ่งช้าเกินไป ฉันได้อ่านหนังสือเล่มนี้สับเพื่อปรับปรุงความเร็วในการเขียนแต่ฉันสงสัยว่าถ้ามีวิธีการโดยตรงมากขึ้นเป็นไปได้ที่อาจจะโดยการปรับSPISettings

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

5
วิธีการส่งออกแรงดันไฟฟ้าอะนาล็อกที่แท้จริงที่ขาออก
เกี่ยวกับโปรแกรมของฉันมันเป็นโปรแกรมที่ทำการคำนวณบางอย่างแล้วส่งแรงดันไฟฟ้าตามผลลัพธ์โดยใช้ฟังก์ชัน analogWrite อย่างไรก็ตามปัญหาของฉันคือฉันได้ทำการเขียนโปรแกรมของฉันตามความเข้าใจผิดว่าฟังก์ชัน analogWrite ผ่าน PWM ทำหน้าที่ส่งสัญญาณแรงดันไฟฟ้าอะนาล็อกซึ่งจริงๆแล้วมันเป็นเพียง "จำลอง" แรงดันไฟฟ้าอนาล็อกแทน นี่คือส่วนที่เกี่ยวข้องในรหัสของฉัน: int pwmOutput = 11; int pwm = 0; void compareNewOldVoltageYes(void) { if(pv_Vnew > pv_Vold && pwm != 255) { ++pwm; //increasing value } else if(pwm != 0) { --pwm; //decreasing } } void compareNewOldVoltageNo(void) { if(pv_Vnew > pv_Vold && pwm …

4
กำลังเขียนโปรแกรม C นอก Arduino IDE?
ฉันชอบความคิดในการใช้ Arduino IDE สำหรับโครงการที่เรียบง่ายและสำหรับการเริ่มต้นกับ Arduino แต่ฉันทามติที่ฉันได้รับมาจนถึงตอนนี้ก็คือสำหรับผู้ที่เพิ่งเริ่มใช้ Arduino และ / หรือการเขียนโปรแกรมทั่วไป ความเข้าใจของฉันคือมันเป็นไปได้ที่จะเขียนโปรแกรม C ตั้งแต่เริ่มต้นนอกเหนือจาก Arduino IDE อย่างสมบูรณ์แล้วใช้เครื่องมือเช่น AVRDUDE เพื่ออัปโหลดไปยัง Arduino MCU ตัวเลือกนี้แม้ว่าจะน่าสนใจและน่าสนใจทำให้ฉันมีข้อกังวลเล็กน้อย: ห้องสมุด Arduino ใดที่จะต้องนำเข้า / เชื่อมโยงโดยโปรแกรม "raw C" ดังกล่าว ฉันคิดว่าเมื่อโปรแกรมที่ใช้ Arduino IDE ดำเนินการdigitalWrite(...)มันเรียก C lib จริง ๆซึ่งอาจมาจาก Arduino ภายใต้ประทุน ฉันกังวลเกี่ยวกับการทำให้แน่ใจว่า "libs พื้นฐาน" เหล่านี้ทั้งหมดได้รวมอยู่ในโปรแกรม C ของฉัน คิด? มีอะไรอีกที่ "หายไป" จากการบินเดี่ยวและออกไปข้างนอก Arduino …
12 arduino-ide  library  c 

3
สามารถใช้หมุด tx และ rx บน uno เช่นเดียวกับหมุดดิจิทัลทั่วไปได้หรือไม่?
uno มีพินดิจิตอลที่ทำเครื่องหมาย 0-13 0 ถูกทำเครื่องหมายเป็น rx และ 1 ถูกทำเครื่องหมายเป็น tx สามารถใช้สองพินเหล่านี้เป็นพินดิจิตอลทั่วไปได้หรือไม่หากฉันไม่มีพินดิจิตอล

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