Arduino

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

2
การควบคุมฟลอปปีดิสก์ไดรฟ์ด้วย Arduino
ฉันมีปัญหาในการควบคุมฟลอปปีดิสก์ไดรฟ์ 3.5 "กับ Arduino Uno ฉันมีฟล็อปปี้ดิสก์ไดรฟ์ที่ขับเคลื่อนด้วยแหล่งจ่ายไฟของคอมพิวเตอร์ที่เปิดอยู่และ Arduino ขับเคลื่อนโดย USB ของคอมพิวเตอร์ของฉัน ฉันตัดริบบิ้นของตัวเชื่อมต่อ IDC 34 พินเพื่อแยกเส้นทางไปยัง Arduino ของฉัน ฉันสามารถเปิดฟลอปปีดิสก์มอเตอร์และย้ายหัวอ่าน / เขียนไปมาได้ แต่ฉันไม่สามารถอ่านพัลส์ใด ๆ จากหมุด Track-0 หรือดัชนี ฉันมีหมุด 7, 15, 17, 19 และ 25 จากฟลอปปี้ที่ต่อสายดินทั้งหมดกับ Arduino ของฉันและฉันมีหมุด 8, 16, 18, 20 และ 26 จากฟลอปปี้ที่เชื่อมต่อกับ Arduino ของฉันเป็นขาออกดังนั้นฉันจึงสามารถควบคุม ไดรฟ์ ฉันคาดว่าดัชนีจะชีพจรเมื่อมอเตอร์ดิสก์หมุนและสำหรับแทร็ก 0 จะเปลี่ยนเมื่อฉันอยู่ที่ด้านนอกของดิสก์ แต่พวกเขาทั้งคู่จะต่ำเสมอ ฉันพลาดอะไรไปรึเปล่า? นี่คือข้อมูลจำเพาะที่ฉันพบที่ด้านหลังของฟลอปปีดิสก์ยูนิต …

4
ตั้งโปรแกรม ATMega328P และใช้งานได้โดยไม่ต้องมีบอร์ด Arduino
ฉันต้องการใช้ ATMega328P สำหรับโครงการของฉันฉันหวังว่าจะทำโดยไม่มีบอร์ด Arduino ฉันรู้กับ Arduino IDE และบอร์ด Arduino ฉันสามารถเขียนโปรแกรมไมโครคอนโทรลเลอร์ อย่างไรก็ตามจะเป็นไปได้ไหมถ้าฉันได้ตั้งโปรแกรมและดีบั๊กโปรแกรมด้วยบอร์ด Arduino IDE + Arduino เพื่อถอดไมโครคอนโทรลเลอร์ออกจากบอร์ด Arduino และใช้ ATMega328P แยกกันโดยไม่มีบอร์ด ถ้าใช่การกำหนดค่าเพิ่มเติมที่ฉันควรทำคือ ATMega328P เพื่อทำงานอย่างถูกต้องบน breadboard?

4
การแปลง ADC เป็นแรงดันขึ้นอยู่กับมูลค่าที่แท้จริงของพิน +5 V หรือไม่?
คำถาม: การแปลงของ ADC นับเป็นแรงดันขึ้นอยู่กับแรงดันไฟฟ้าที่แท้จริงของขา +5 V หรือไม่? ถ้าใช่วิธีการรับแรงดันไฟฟ้าจากบอร์ดเป็นที่ยอมรับคืออะไร? พื้นหลัง / รายละเอียด: ฉันมีวงจรที่มี Arduino Nano (โคลน) ที่ทำงานจากตัวเชื่อมต่อ USB (จากฮับ) หน้าที่ของ Arduino คือการวัดแรงดันไฟฟ้าของแบตเตอรี่ซึ่งจะทำให้วงจรที่สองเปิด / ปิดโดยนาโน สำหรับการอ้างอิงมันเป็นเครื่องทดสอบแบตเตอรี่ มีหน้าจอ Nokia 5110 ที่แสดงแรงดันไฟฟ้าจากร่างที่เรียบง่ายด้านล่าง void setup() { Serial.begin(9600); display.begin(); // Init done // You can change the contrast around to adapt the display // for the …

2
ใส่ ATmega328 ในโหมดสลีปลึกมากและฟังซีเรียล
ฉันได้ตรวจสอบตัวเลือก sleeps ของ ATmega328 และอ่านบทความเกี่ยวกับเรื่องนี้และฉันอยากจะเข้าใจถ้ามีตัวเลือกเพิ่มเติม ดังนั้นฉันต้องการได้รับกระแสที่ต่ำที่สุดเท่าที่จะเป็นไปได้เพื่อที่ว่าสิ่งใดก็ตามที่น้อยกว่านั้นจะดี 100uA - ตราบใดที่ฉันสามารถฟัง uart และขัดจังหวะเมื่อตื่นขึ้นมา ฉันกำลังใช้ PCB แบบกำหนดเอง (ไม่ใช่ UNO) ด้วย ATmega328p การตั้งค่าชิปเป็นการนอนหลับลึก: set_sleep_mode (SLEEP_MODE_PWR_DOWN); sleep_enable(); sleep_cpu (); จะไม่ตื่นขึ้นกับการสื่อสารแบบอนุกรมตามนี้ คุณจะต้องวางไว้ในIDLEโหมดเพื่อฟังซีเรียล แต่สิ่งนี้จะกิน mA -bad น้อย ฉันได้พบลิงค์นี้ที่คุณสามารถเชื่อมต่อในฮาร์ดแวร์อนุกรมเพื่อขัดจังหวะ - ซึ่งเป็นอันตรายเพื่อให้คุณสามารถหลวมข้อมูลและยิ่งกว่านั้นฉันต้องการหมุดขัดจังหวะ 2 เหล่านี้ ฉันยังได้อ่านบทความของ Gammonซึ่งคุณสามารถปิดการใช้งานบางสิ่งได้ดังนั้นคุณจะได้รับ IDLE sleep ด้วยพลังงานที่ต่ำกว่ามาก - แต่เขาไม่ได้พูดถึงว่าคุณได้รับจากสิ่งนี้อย่างแท้จริง: power_adc_disable(); power_spi_disable(); power_timer0_disable(); power_timer1_disable(); power_timer2_disable(); power_twi_disable(); ดังนั้นบรรทัดล่างมีตัวเลือกใดออกไปรับน้อยกว่า 0.25mA …

1
Arduino IDE #ifdef
ฉันใช้ Arduino IDE ของฉันเพื่ออัปโหลดภาพร่างของฉันไปยัง Arduino หรือ ATTiny หรือ ATmega328 ดังที่คุณทราบว่าอุปกรณ์แต่ละเครื่องสามารถมี pinout ที่แตกต่างกัน คอมไพเลอร์ Arduino รองรับifdefหรือไม่ขึ้นอยู่กับบอร์ดที่ฉันเชื่อมต่ออยู่หรือไม่? ตัวอย่างเช่น #ifdef Attiny85 a=0; b=1; c=2; #else // arduino a=9; b=10; c=11; #endif

5
ฉันสามารถใช้แผ่นจดบันทึก ++ สำหรับเขียนแบบร่างได้หรือไม่
ก่อนที่ฉันจะติดตั้ง Arduino IDE ฉันแค่สงสัยว่าฉันสามารถใช้ notepad ++ เพื่อเขียนไฟล์และย้ายไปยังตำแหน่งที่ถูกต้องได้หรือไม่ ฉันคิดว่า notepad ++ ไม่รองรับโค้ด Arduino แต่ฉันคิดว่ามันจะมี mod สำหรับมันแม้ว่าสเก็ตช์จะเป็นเวอร์ชั่นต่ำสุดของ C ++ ที่รองรับ
13 ide 

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++ 

4
อะไรคือข้อตกลงกับพิน 13 LED ของ Uno?
(ฉันมี Sparkfun RedBoard แต่คำถามนี้ดูเหมือนจะนำไปใช้กับบอร์ด R3 Unos และ Uno ที่เข้ากันได้) ขณะที่ฉันกำลังสร้างวงจรแรกในหนังสือคู่มือ SIK ของฉัน (เพิ่มตัวต้านทาน, LED, เชื่อมต่อและทำให้มันกะพริบจากรหัส ) ฉันสังเกตเห็นไฟ LED สีฟ้าบนกระดานทำทุกอย่างที่ LED ของวงจรทำ - กะพริบตามการตั้งโปรแกรม ทำไม LED นี้ถึงอยู่ที่นี่? กรณีการใช้งานมีไว้เพื่ออะไร? ฉันจะต้องปรับวงจรชนิดใดให้เหมาะกับ LED นี้? pin 13 คือ debug หรือ pin การแก้ไขปัญหาแบบดั้งเดิมหรือไม่? การประชุมนี้มาจากไหน

5
ลดความล่าช้าระหว่าง arduino และร่างการประมวลผลบนคอมพิวเตอร์ของฉัน
ขณะนี้ฉันกำลังใช้โปรเจค # 14 ของหนังสือโครงการ Arduino ฉันพยายามควบคุมร่างการประมวลผลบนแล็ปท็อปของฉันโดยใช้ Arduino สามารถทำได้โดยใช้โพเทนชิออมิเตอร์เพื่อควบคุมพื้นหลังของภาพ รหัส Arduino: void setup(){ Serial.begin(9600); } void loop(){ Serial.write(analogRead(A0)/4); } การประมวลผล: //imports serial library import processing.serial.*; //setups the serial object Serial myPort; //creates an object for the image PImage logo; //variable to store background color int bgcolor = 0; void setup(){ colorMode(HSB,255); …

10
เซ็นเซอร์สำหรับระดับถังเก็บน้ำใต้ดิน
ในทำนองเดียวกันกับคำถาม " วิธีที่ดีที่สุดในการตรวจสอบว่าเหยือกน้ำขนาด 5 แกลลอนว่างเปล่าหรือเปล่า " ฉันกำลังมองหาวิธีวัดปริมาณน้ำในภาชนะ นี่คือเพื่อให้สามารถเชื่อมต่อกับ Arduino สำหรับการบันทึกและการรายงาน แต่มันเป็นภาชนะที่แตกต่างกันมาก ฉันมีบ้านที่มีน้ำใช้ในครัวเรือนที่จัดหามาจากถังคอนกรีตใต้ดิน (ประมาณ 3,000 แกลลอนสหรัฐ 11,000 ลิตร) แม้ว่าจะมีคัทเอาท์สวิตช์ลอยเมื่อมันว่างเปล่า (เพื่อป้องกันปั๊ม) แต่ฉันอยากจะรู้ว่ามันลดน้อยลงไปนานก่อนหน้านั้น สิ่งที่ดีเลิศในการวัดอย่างแน่นอนหรือในขั้นตอน (อย่างน้อยในแปดโหลด) ดังนั้นซอฟต์แวร์สามารถคาดการณ์เมื่อมันจะหมดตามการใช้งานเฉลี่ยและสามารถตรวจสอบออนไลน์เมื่ออยู่ห่าง รถถังมีช่องคอนกรีตขนาดใหญ่และรูเล็ก ๆ ที่มีก้านวัดแบบดั้งเดิมที่มีอยู่ดังนั้นการเข้าถึงจึง จำกัด มันอยู่ในสภาพแวดล้อมทะเลทรายที่รุนแรง แต่ห้องปั๊มและพลังงานอยู่ห่างออกไปเพียงไม่กี่ฟุต ความคิดบางอย่างที่ฉันมี: ระงับสวิทช์ลอยด้วยสายที่มีความยาวแตกต่างกันจากแถบด้านในถังและวางสายทั้งหมดกลับไปที่คอนโทรลเลอร์ ยากที่จะติดตั้งน่าเกลียดเทคโนโลยีต่ำ หรือสิ่งที่คล้ายกันในเสาแนวตั้ง หน้าสัมผัส (เช่นปลั๊กสหรัฐ 2 ขา) บนเสาแนวตั้งที่เชื่อมต่อกลับไปยังคอนโทรลเลอร์อีกครั้ง (อาจใช้สายริบบิ้น) การกัดกร่อน / ขั้วบวกอาจเป็นปัญหาถึงแม้ว่ากำลังงานอาจเป็นเพียงแค่ช่วงเวลาสั้น ๆ การรวมตัวของใยแมงมุมและแมลงที่ตายแล้วอาจทำให้อ่านผิดได้ ใช้สายเคเบิลหุ้มฉนวนอย่างเต็มที่ในแนวตั้งและใช้เป็นเสาอากาศเพื่อส่งพัลส์ผ่านและใช้ความแตกต่างระหว่างวิธีการทำงานเป็นเสาอากาศในอากาศและในน้ำ (เช่นเครื่องวัด SWR) เพื่อคำนวณว่าไกลแค่ไหน น้ำคือ ตัวตรวจหาระยะทางอัลตราโซนิก …
13 sensors 

6
การส่งข้อมูลอนุกรมจำนวนมาก
ดังนั้นในสาขาหุ่นยนต์บางครั้งคุณจำเป็นต้องมีบอร์ดและหรือคอมพิวเตอร์หลายเครื่องเชื่อมโยงกันเพื่อแบ่งปันข้อมูลหรือบันทึกข้อมูลสถิติ ขณะนี้ฉันต้องการส่งตัวแปรที่แตกต่างกันเล็กน้อยผ่านการเชื่อมต่อแบบอนุกรมและสงสัยว่าวิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? ฉันได้พิจารณาแล้วว่าโครงสร้างการส่งอาจเป็นวิธีที่ง่ายกว่าในการส่งข้อมูล ไม่มีใครรู้วิธีอื่นใดที่อาจมีประสิทธิภาพมากขึ้น? โปรดจำไว้ว่าฉันจะต้องส่งข้อมูลสำหรับมอเตอร์ 4 ตัว, คอมเพรสเซอร์, อุณหภูมิที่แตกต่างกัน, สิ่งที่สุ่มและแขน 3 ส่วน
13 serial 

3
เป็นไปได้ไหมที่จะหาเวลาที่กำหนดโดยมิลลิวินาที?
ฟังก์ชันmillisจะทำงานในช่วง 100+ วินาทีหรือน้อยกว่า มีวิธีที่เชื่อถือได้ในการวัดเวลาที่ใช้ในการโทรหนึ่งพันครั้งหรือไม่? วิธีการหนึ่งที่อยู่ในใจคือการใช้microsอย่างไรก็ตามการเรียกไปยังmicrosจะรวมเวลาที่ใช้ในการเรียกใช้ฟังก์ชันของmicrosตัวเองเช่นกันดังนั้นขึ้นอยู่กับระยะเวลาในการใช้ไมโครวินาทีการวัดสำหรับmillisอาจปิด millisฉันต้องการที่จะพบนี้เป็นโปรแกรมที่ผมกำลังทำงานอยู่บนต้องมีการวัดเวลาที่ถูกต้องสำหรับทุกขั้นตอนการดำเนินการในรหัสรวมทั้ง
13 time  millis 

8
เป็นไปได้ไหมที่จะอัปโหลดโปรแกรมจากแท็บเล็ต
มีวิธีง่าย ๆ ในการอัปโหลดโปรแกรม / สเก็ตช์จากแท็บเล็ต iPad หรือ Android โดยไม่ต้องเพิ่มเกราะป้องกัน (Bluetooth หรือ Wi-Fi) หรือไม่? ถ้าไม่สามารถทำได้โดยใช้เกราะหรือไม่ ต้องการโล่แบบใด มีตัวเลือก IDE อะไรบ้าง
13 uploading  ide  android 

1
มีค่าคงที่ตัวประมวลผลล่วงหน้าสำหรับขนาดหน่วยความจำหรือไม่
ฉันต้องการคอมไพล์ของฉันเพื่อแยกรหัสบางอย่างขึ้นอยู่กับพื้นที่แฟลช / โปรแกรมที่มีอยู่ เพื่อใช้ในโค้ดตัวอย่างของไลบรารีที่ฉันสนับสนุน ในขณะที่โซลูชันปัจจุบันของฉันคือใช้ #ifdef ของประเภทโปรเซสเซอร์ แต่ฉันต้องการที่จะเป็นทั่วไปและไม่ต้องระบุชิปต่างๆทั้งหมด ค่อนข้างจะดีถ้ามีค่าคงที่ pre-processor ที่ระบุขนาดที่พร้อมใช้งาน ที่ฉันไม่คล่องพอใน gcc และหรือ avr-gcc ฉันอาจคาดหวังว่าจะพบค่าคงที่บางอย่างที่คล้ายกันที่กำหนดจุดเริ่มต้นและจุดสิ้นสุดของกอง ในกรณีตัวอย่าง คือทั้ง UNO และ Leo มี Flash 32K แต่ไลบรารี่หลักของ Leo ใช้ 4K สำหรับการรองรับ USB ทำให้มีเพียง 28K เท่านั้น การสาธิตห้องสมุดของฉันใกล้ถึงขีด จำกัด สูงสุดของ UNO และฉันต้องการตัดออกโดยอัตโนมัติตามพื้นที่ว่างของโปรแกรมที่มีอยู่

2
การชุมนุมใน Arduino: IO ลงทะเบียน
คำถาม:ฉันใช้รีจิสเตอร์ชนิดใดในการเข้าถึง IO บน Arduino Uno เมื่อฉันใช้แอสเซมบลีสำหรับการเขียนโปรแกรม แบ็คกราวน์: ฉันสนใจที่จะฝึกทักษะการใช้ภาษาแอสเซมบลีของฉันบน Arduino (ฉันคิดว่าการเปิด / ปิด LED จะง่ายกว่าการกังวลเกี่ยวกับคอนโซล IO) จากการค้นหาเบื้องต้นฉันพบว่า AVR toolchain สามารถใช้กับโปรแกรม Arduino ได้ ถึงกระนั้นฉันก็ไม่ค่อยทราบวิธีการค้นหาการลงทะเบียนที่สอดคล้องกันสำหรับหมุด IO

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