» อิเล็กทรอนิกส์ » เครื่องตรวจจับโลหะ »เครื่องตรวจจับโลหะบน Arduino Pro Mini การประมวลผลความลึกของ Kolokolov-Shchedrin ตามหลักการของ“ การส่งผ่าน”

เครื่องตรวจจับโลหะบน Arduino Pro Mini การประมวลผลความลึกของ Kolokolov-Shchedrin ตามหลักการของ“ การส่งผ่าน”


การรีไซเคิลโครงการน้ำลึก Kolokolov-Shchedrin ความแตกต่างจากรูปแบบดั้งเดิม:
1. ไม่มีออสซิลเลเตอร์คริสตัลบน k561 .. ชิปและควอตซ์ 32 kHz สัญญาณ 32 kHz ให้ Arduino Pro Mini
2. วงจรการแจ้งเตือนด้วยเสียงบนไมโครซีรีย์ 561 หลายชุดยังขาดอยู่ - เป้าหมายก็เช่นกันเช่น Arduino (และฉันต้องบอกว่าเสียงที่ยอดเยี่ยมเมื่อเทียบกับวงจรของผู้เขียน)
3. ขับเคลื่อนโดยแรงดัน unipolar 12 โวลต์ (แบตเตอรี่ตะกั่วกรด)
4. ปรับความไวด้วยปุ่มต่างๆ ด้วยสเกล ADC จาก 0 ถึง 1023 ขีด จำกัด การตอบสนองสามารถปรับได้ตั้งแต่ 1 ถึง 38 (ค่าสามารถเปลี่ยนแปลงได้ง่ายในแบบร่าง)


เครื่องตรวจจับโลหะบน Arduino Pro Mini การประมวลผลความลึกของ Kolokolov-Shchedrin ตามหลักการของ“ การส่งผ่าน”


สิ่งสำคัญที่สุดคือฉันต้องการแสดงในบทความนี้ว่าเป็นไปได้ที่จะรวบรวม MDs บน Arduino ไม่ด้อยกว่าความไวแสงดั้งเดิม (สิ่งนี้ได้ผลเพราะต้นฉบับของวงจรต้นฉบับถูกรวบรวมตามลำดับ 10 ชิ้นดังนั้นจึงมีวัสดุสำหรับการเปรียบเทียบ) วงจรเดิม:


เมื่อฉันเริ่มทำงานกับ Arduino ครั้งแรกฉันกระตือรือร้นมากที่ฉันคิดว่าฉันสามารถค้นหาและประกอบวงจรเครื่องตรวจจับโลหะใด ๆ จากอินเทอร์เน็ตบน Arduino ที่ฉันสามารถหาได้ง่ายในกองขยะขนาดใหญ่ โดยหลักการแล้วมันกลับกลายเป็นอย่างนั้น แต่วงจรนั้นตั้งอยู่บนตัวนับความถี่ซึ่งไม่อนุญาตให้บรรลุช่วงที่ดีจริงๆ ของเล่นเด็กบางชิ้นและการทดสอบปากกา + พยายามทำเงินให้กับผู้เริ่มต้น เอกสารต้นฉบับของ MD นี้เป็นเสมือนจริงที่อนุญาตให้คุณค้นหาวัตถุขนาดใหญ่ในระยะ 2 ม. (ดูหนังสือ Kolokolov-Shchedrin ใน Google) ไม่มีสถิติเกี่ยวกับการแปลง md ฉันหวังว่าเธอจะปรากฏตัวพร้อมกับการสนับสนุนจากแฟน ๆ ของ MD และ Arduino โครงการทำงานร่วมกับ Arduino Uno และ Arduino Pro Mini

เพิ่มเติมเกี่ยวกับการเชื่อมโยงจะถูกวางกระบวนการของการเกิดของ MD นี้บนเว็บไซต์ของหัวแร้งซึ่งกินเวลานานกว่าหนึ่งปีและผลักดันให้ผู้เขียนศึกษาการเขียนโปรแกรมคู่ บางทีภาพร่างอาจดูน่ารำคาญสำหรับใครบางคน - ฉันยินดีที่จะยอมรับการแก้ไขของคุณ




ในขณะนี้มีร่างที่ให้คุณปรับความไวของสิ่งกีดขวาง (พิน 7 douins +1 ไปที่สิ่งกีดขวางและพิน 8 -1 ถึงสิ่งกีดขวาง) .
Arduino เกี่ยวกับ mini 5v, 16MHz, ATmega168 และหน้าจอที่ใช้ ถัดจากเครื่องชั่งคืออะแดปเตอร์ Mini SD


ตามที่ระบุไว้แล้ว 1602 ค่าใช้จ่าย 86 รูเบิล, ProMini - 82 รูเบิล หากคุณต้องการโดยทั่วไปคุณสามารถนำ ATmega168 ที่เปลือยเปล่าพัฒนากระดานขึ้นมาและเติมร่างลงในกระดานได้โดยตรงตัวอย่างเช่นฉันติดตั้ง mom-dad บนบอร์ด MD โดยใช้ตัวเชื่อมต่อ ภาพแสดงปลั๊ก 6 ขาของ Arduino ซึ่งร่างสเก็ตถูกเทลงบนบอร์ดโดยตรง

ร่าง MD.Rx-Tx.ProMini.SrednjajaTochkaRegBar.ino

// อินพุตแบบอะนาล็อก A3 สำหรับโวลต์มิเตอร์
// สัญญาณอะนาล็อก A4 ขนาด A4 สำหรับสัญญาณ
// 6- ข้อสรุปของสวนสัตว์
// 9 - ความถี่ขาออก 31200 Hz
#include
จอแอลซีดีคริสตัลเหลว (12, 11, 5, 4, 3, 2);
                                       
  byte z1 [8] = {// ไอคอนแบตเตอรี่
  0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
 
 int countleds = 0; // variable เพื่อเก็บค่าระดับสเกล
 int voltag = 0; // ตัวแปรเพื่อจัดเก็บค่าแรงดันไฟฟ้า
 int noll = 0; // ตัวแปรเพื่อเก็บค่าจุดกึ่งกลาง
   #define NUM_SAMPLES 10 ตัวอย่างแบบอะนาล็อก 10 // 10 ให้อ่านใน 1 วินาที
   int sum = 0; // ผลรวมของตัวอย่างที่ถ่าย
   int sun = 0; // เดียวกัน แต่หารด้วย 10
   ถ่านตัวอย่างที่ไม่ได้ลงชื่อ = 0; // หมายเลขตัวอย่างปัจจุบันด้วย
   แรงดันลอย = 0.0; // แรงดันไฟฟ้าที่คำนวณได้
   const int button1 = 7; // ปุ่ม barrier plus
   const int button2 = 8; // ปุ่มสิ่งกีดขวางลบ
   int i = 5; // อุปสรรค
   
การตั้งค่าเป็นโมฆะ () {
     lcd.begin (16, 2); // แสดงการเริ่มต้น
     lcd.setCursor (1, 0);
     lcd.setCursor (10, 1);
     lcd.print ("Rx-Tx");
     ล่าช้า (3000);
     lcd.clear ();
     
     TCCR1A = TCCR1A & amp; 0xe0 | 2;
     TCCR1B = TCCR1B & amp; 0xe0 | 0x09;
     analogWrite (9, 126); // ที่ขา 10 PWM = 50% f = 31200Hz
     
     lcd.createChar (1, z1);
     }
     
void loop () {
     int buttonState1 = สูง; // สถานะของปุ่มเป็นหนึ่ง
     int buttonState2 = สูง; // สถานะสองปุ่ม
   sample_count = 0; // รีเซ็ตรูปร่างของจำนวนการเพิ่ม
   รวม = 0; // รีเซ็ตผลรวมของการเพิ่ม 10 ครั้ง
   ในขณะที่ (sample_count & lt; NUM_SAMPLES) {
   รวม + = analogRead (A4); // การวัดถัดไปจะถูกเพิ่มเข้าไปในผลรวม
   sample_count ++; // หน่วยถูกเพิ่มเข้าไปในหมายเลขการวัด
   sun = sum / 10;} // หาค่าเฉลี่ยจากการวัด 10 ครั้ง
   
   noll = analogRead (A3) / 2; // จุดกึ่งกลางพลังงาน
   แรงดันลอย = แผนที่ (อะนาล็อกอ่าน (A3), 0,1023,0,1500) /100.0;
                                        // โวลต์มิเตอร์สร้างขึ้นที่อินพุต A3
   if (sun & gt; = noll + i) {countleds = แผนที่ (sun, noll + i, noll * 2 - 250, 9, 14);
                                        // ถ้าผลลัพธ์ที่ได้รับอยู่ในส่วนที่ 9-15 ของสเกล
    เสียง (6, นับ * 100);}
   if (sun & lt; = noll - i) {countleds = map (sun, 116, noll - i, 0, 7)
                                        // ถ้าผลลัพธ์ที่ได้คือ 0-7 เซกเมนต์ของเครื่องชั่ง
    เสียง (6, นับ * 50); }
     if (sun & lt; noll & amp; & amp; sun & gt; = noll - (i-1)) {countleds = 7;
    ไม่มี (6); } // islet ของ ZERO เสมือน (7 ส่วน)
     if (sun & gt; noll & amp; & amp; sun & lt; = noll + (i-1)) {countleds = 8;
    ไม่มี (6); } // island of virtual ZERO scale (8 ส่วน)

   
    {lcd.setCursor (countleds, 0); // ตั้งค่าเคอร์เซอร์เป็นคอลัมน์ countleds, บรรทัด 0
    lcd.print ("\ xff"); // กรอกไอคอน
    lcd.setCursor (0, 1); // เลื่อนไปที่ 2 แถว, คอลัมน์ -0
    lcd.print (อักขระ (1)); // สัญลักษณ์ของแบตเตอรี่
    lcd.setCursor (1, 1); // เลื่อนไปที่ตัวบ่งชี้แรงดันไฟฟ้า
    lcd.print (แรงดันไฟฟ้า) // แรงดันไฟฟ้า
    lcd.setCursor (7, 0); // คอลัมน์ที่ 8 แถวที่ 1
    if (sun & lt; noll) {lcd.print ("{");} // พิมพ์
    lcd.setCursor (8, 0); // คอลัมน์ที่ 9 แถวที่ 1
    if (sun & gt; noll) {lcd.print ("}");} // พิมพ์
    lcd.setCursor (7, 1);
    lcd.print ("B =");
    lcd.setCursor (9, 1); // 11 คอลัมน์แถวที่ 2
    lcd.print (i); // อุปสรรค
    lcd.setCursor (13, 1); // คอลัมน์ที่ 13 แถวที่ 2
    lcd.print (ดวงอาทิตย์); // พิมพ์ค่าเฉลี่ยของค่า ADC
    ล่าช้า (100); // รอ
    
  buttonState1 = digitalRead (button1); // อ่านปุ่มสถานะ 1
  buttonState2 = digitalRead (button2); // อ่านสถานะปุ่ม 2
  if (buttonState1 == LOW) {i = i + 1; ล่าช้า (50);}
                                        // เมื่อกดปุ่มสิ่งกีดขวางก็จะเพิ่มขึ้น 1 หน่วงเวลา 50
  if (buttonState2 == LOW) {i = i - 1; ล่าช้า (50);}
                                        // เมื่อกดปุ่มสิ่งกีดขวางจะลดลง 1 หน่วงเวลา 50
  if (i & lt; 1) {i = 1;} // ขอบเขตล่างของสิ่งกีดขวาง
  if (i & gt; 38) {i = 38;} // ขอบเขตบนสุดของสิ่งกีดขวาง
 
 lcd.clear ();
    }
}

ฉันไม่ได้ใช้รถสององค์ประกอบสุดท้ายของ TL074 ไม่มีการใช้งาน แต่ในวงจรและบอร์ดพวกเขาอยู่ คุณอาจต้องการให้พวกเขาทำงานในภายหลัง ฉันเชื่อว่าฉันบรรลุเป้าหมาย หน่วยแสดงผลทำงานได้อย่างยอดเยี่ยม ทุกอย่างอื่นขึ้นอยู่กับ MD
9.8
10
10

เพิ่มความคิดเห็น

    • รอยยิ้มรอยยิ้มxaxaตกลงdontknowyahooNea
      นายรอยขีดข่วนคนโง่ใช่ใช่ใช่ก้าวร้าวลับ
      ขอโทษเต้นdance2dance3ให้อภัยช่วยเหลือเครื่องดื่ม
      หยุดเพื่อนดีgoodgoodนกหวีดหน้ามืดตามัวลิ้น
      ควันการตบมือเครย์ประกาศเป็นขี้ปากดอน t_mentionดาวน์โหลด
      ความร้อนโมโหlaugh1ภาคตะวันออกเฉียงเหนือประชุมmoskingเชิงลบ
      not_iข้าวโพดคั่วลงโทษอ่านทำให้ตกใจกลัวค้นหา
      ยั่วยุthank_youนี้to_clueumnikรุนแรงเห็นด้วย
      ไม่ดีbeeeblack_eyeblum3หน้าแดงโม้ความเบื่อ
      เซ็นเซอร์การหยอกล้อsecret2ขู่ชัยชนะYusun_bespectacled
      shokrespektฮ่า ๆprevedยินดีต้อนรับkrutoyya_za
      ya_dobryiผู้ช่วยne_huliganne_othodiFLUDห้ามใกล้
24 แสดงความคิดเห็น
ผู้เขียน
ขอบคุณ puteec FU! ฉันขอมันครั้งที่สอง ฉันเย็บผ่าน Arduino uno ปัญหาหายไปหลังจากอัปเดต bootloader ตอนนี้สนใจวิธีกำหนดค่าเพิ่มเติม
puteec fu
Arduino ใด ๆ ที่เหมาะสำหรับ atmega168, atmega328 เกี่ยวกับนาโนนี้ด้วยตัวเชื่อมต่อ usb หากไม่เข้าใจผิด เย็บใน Arduino Arduino จากตัวอย่างของร่าง Blink (ไฟ LED กระพริบที่ขา 13, LED ติดตั้งบนกระดาน) ตรวจสอบให้แน่ใจว่าคุณใช้พอร์ตที่ถูกต้องมีการเลือกบอร์ดอย่างถูกต้องเลือกโปรเซสเซอร์บนบอร์ดอย่างถูกต้องเลือกความถี่ควอทซ์บนบอร์ดอย่างถูกต้องและเลือกวิธีการเฟิร์มแวร์ (μ2) อย่างถูกต้อง
ไม่พบข้อผิดพลาด
สร้างไฟล์ใหม่ใน Arduino คัดลอกร่างจากที่นี่ไปยังร่างใหม่ที่สะอาดและมันจะทำงานแต่ก่อนอื่นให้ทำให้ LED บนบอร์ด Arduino กะพริบด้วยตัวอย่างการกะพริบมาตรฐาน จากนั้นไปต่อ
ฉันซื้อ Arduino p nano บนโปรเซสเซอร์ Atmega328 เท่านั้น ฉันได้ตรวจสอบวิดีโอและฟอรัมมากมาย ... พวกเขาบอกว่าควรจะเกิดขึ้น .... แต่คนเกียจคร้านไม่กระพริบ ... มันให้ # รวมถึงคาดว่า "FILENAME" หรือ มีใครพบกับสิ่งนี้หรือไม่?
ผู้เขียน
ภาพร่างทำงานกับบอร์ดนี้ ปลั๊กที่เกิดขึ้นคืออะไร?
หากคุณเทร่างสุดท้ายแล้วรายละเอียดทั้งหมดที่เกี่ยวข้องกับ D3.3 และ D3.4 รวมถึงพวกเขาเองไม่สามารถติดตั้งได้ บนหัวแร้งมีการเขียนซ้ำในหัวข้อนี้
Anjey888
สวัสดี หัวข้อนี้มีความสนใจมาก ฉันต้องการรวบรวมอุปกรณ์ ฉันทำบอร์ดหัวแร้งออกไป ... แล้วก็ติด เนื่องจากมีข้อขัดแย้งระหว่างบอร์ดกับวงจรเป็นอย่างมาก เริ่มเปรียบเทียบกระดานของคุณ ... มันแตกต่างกันมาก แต่สับสนกับสายรัดที่ Arduino
ฉันขอความช่วยเหลือจากคนที่มีความรู้
ผู้เขียน
เช่นเดียวกับโลหะอื่น ๆ ความลึกของการตรวจจับขึ้นอยู่กับพื้นที่ของเป้าหมาย ยิ่งความลึก
แขกยูจีน
การตรวจจับวัตถุมีขีด จำกัด อะไรบ้าง ทอง, อลูมิเนียม, ทองแดง
แขกของ Alexander
สิ่งที่ต้องทำตอนนี้เพราะยังมีสิ่งกีดขวางชอตกี้อยู่บ้าง
ผู้เขียน
ดีที่นี่! เกี่ยวกับแม้แต่ค่าที่น้อยที่สุดก็ไม่เป็นไปตามคำถาม! ขอบคุณสำหรับการชี้แจง
ข้อความอ้างอิง: puteec_80
และผู้คนจะเข้าใจสิ่งที่ฉันพูดถึงได้อย่างรวดเร็วและอย่างสังหรณ์ใจ
คุณสามารถยังคงอยู่ในข้อผิดพลาดนี้ ((คนที่มีความรู้ทางเทคนิคจะเสีย
BARRIER สามี
1. มีสิ่งกีดขวาง (กำแพงชนิดหนึ่ง, คานขวาง) ที่ขวางทาง
2. รั้วฟันดาบ

THRESHOLD เกณฑ์สามี
1. ในวิทยาศาสตร์และเทคโนโลยีเกณฑ์ถูกเรียกว่าค่าที่น้อยที่สุดระดับของการสำแดงบางอย่าง
เกณฑ์ความไวของอุปกรณ์ | เกณฑ์การได้ยิน | เกณฑ์ของความเจ็บปวด | เซ็นเซอร์จะทำงานเมื่อเกินเกณฑ์อุณหภูมิที่ตั้งไว้
รอยยิ้ม
ผู้เขียน
มาพักกับเราเอง ฉันจะเขียน "การเพิ่มสิ่งกีดขวางโดยหนึ่งหน่วย" และ "ความไวของตัวรับคือ 5 μV" และคุณเขียน“ การเพิ่มเกณฑ์การปฏิบัติงานโดยหนึ่งหน่วย” และ“ ขีดจำกัดความไวของผู้รับ .. ” ยิ่งไปกว่านั้นผู้คนจะเข้าใจสิ่งที่ฉันกำลังพูดถึงได้เร็วขึ้นและอย่างสังหรณ์ใจ
และฉันอธิบายในตัวอย่างนี้ ไม่มีเกณฑ์ในการพูดอย่างเคร่งครัดเนื่องจากไม่มีระดับอ้างอิงที่ชัดเจน มีวงดนตรีแนวคัทเอาท์บางชนิดจากสัญญาณลอย ดังนั้นสำหรับฉันแล้วคำจำกัดความของสิ่งกีดขวางนั้นเหมาะสมกว่าสำหรับแถบ "ลอย" นี้มากกว่าสำหรับเพดาน
อาร์กิวเมนต์ที่ไม่มีจุดหมายและโง่โดยทั่วไป คุณมีคำถามหรือไม่?
ข้อความอ้างอิง: puteec_80
ขีด จำกัด ล่างและบนคืออะไร
บางทีความหมายของคำที่แปลไม่ตรงกันหรือไม่ตรงกันเล็กน้อย แต่พวกเขาอธิบายกระบวนการอย่างสมบูรณ์และค่อยๆเข้าสู่คำสแลง
สิ่งที่เป็นเกณฑ์ เกณฑ์การตอบสนองอยู่ในกรณีของคุณ โปรดอธิบายว่า "สิ่งกีดขวาง" อธิบายกระบวนการอย่างไร
สำหรับการเข้าร่วมสแลง - ตอนนี้มีความเข้าใจผิดมากมายหลายอย่างที่นั่น ((
ผู้เขียน
ในกรณีนี้ฉันยังมีแนวโน้มที่จะใช้คำว่า "สิ่งกีดขวาง" เพราะ มันเป็นสิ่งกีดขวางที่ตั้งอยู่ในข้อความของโปรแกรม แต่ไม่ได้เข้าสู่ช่วงของมันสัญญาณจะถูกรับรู้โดยไมโครคอนโทรลเลอร์ว่ามีประโยชน์ และมันก็เป็นอุปสรรคเพราะ มีสองค่า - เกณฑ์บนและล่างของการเรียกใช้ การดำเนินการเกิดขึ้นเหนือ "บน" และใต้เส้นขอบ "ล่าง" ของสิ่งกีดขวางในระดับ ADC อย่างไรก็ตามคุณรู้ดีกว่า ขีด จำกัด ล่างและบนคืออะไร
บางทีความหมายของคำที่แปลไม่ตรงกันหรือไม่ตรงกันเล็กน้อย แต่พวกเขาอธิบายกระบวนการอย่างสมบูรณ์และค่อยๆเข้าสู่คำสแลง
โดยวิธีการ ความไวและอุปสรรคเป็นสิ่งที่แตกต่างอย่างสิ้นเชิง
ใช่พวกเขาตัดกัน แต่ไม่มาก
ข้อความอ้างอิง: puteec_80
ใน MD ต่างประเทศเมนูพูดว่า "Barier"

ฉันอาจทำให้คุณประหลาดใจ แต่คำภาษาอังกฤษจำนวนมากที่มีลักษณะคล้ายกับของเรามีความหมายแตกต่างกันบางครั้งก็ใกล้ แต่บางครั้งก็ไม่ ค้นหาคำว่า "เพื่อนนักแปลเท็จ"
ตอนนี้เป็นหลัก ในภาษารัสเซีย วิชาการ เอกสาร ไม่ มันไม่มีวลี“ กำแพงแห่งความอ่อนไหว” - และนั่นก็! มี "ขีดจำกัดความไว" ในบางกรณีเราสามารถพูดว่า "ขีดจำกัดความไว" แต่ไม่ใช่ "อุปสรรคแห่งความไว" บางทีอาจใช้ความรู้ในสาขาอื่น แต่ไม่ใช่ในสาขาอิเล็กทรอนิกส์
ผู้เขียน
นั่นหมายความว่าวิศวกรต่างชาติทุกคนกระโดดข้ามไม้เท้าไปบนท้องถนน ใน MD ต่างประเทศเมนูพูดว่า "Barier" สหายอีวานคุณกำลังตกอยู่ในสายตาของฉันด้วยการวางยาเล็กน้อย ความคิดเห็นของคุณเกี่ยวกับข้อดีอยู่ที่ไหน หลังจากนั้นคุณตบมือให้แบนบนหน้าผาก คุณเคยทำให้ฉันเสียบ่อย ลงโทษ
ความแตกต่างมีความสำคัญ: ขีด จำกัด เป็นคำศัพท์ทางเทคนิคสิ่งกีดขวางคือ "ติดอยู่ฝั่งตรงข้ามถนน"
ผู้เขียน
บางที แต่ฉันไม่เห็นความแตกต่าง
อาจไม่ใช่ "สิ่งกีดขวาง" แต่เป็นเกณฑ์หรือไม่ ;)
ผู้เขียน
แผนภาพไม่แสดงปุ่มปรับอุปสรรค พวกเขาเชื่อมต่อกับหมุด 7 และ 8 ของ Arduino แต่ละคนดึงขึ้นพร้อมกับความต้านทาน 10k เพื่อบวกปิดเมื่อคุณกดมวล
ผู้เขียน
void loop () {
int buttonState1 = สูง; // สถานะของปุ่มเป็นหนึ่ง
int buttonState2 = สูง; // สถานะสองปุ่ม

int pot = analogRead (A4); // ตัวกรองสำหรับการเปลี่ยนสัญญาณที่รวดเร็ว
sign = sign * (1-K) + pot * K;

noll = noll * (1-L) + เครื่องหมาย * L; // ตัวกรองสัญญาณระยะยาว
// โวลต์มิเตอร์สร้างขึ้นที่อินพุต A3
แรงดันลอย = แผนที่ (อะนาล็อกอ่าน (A3), 0,1023,0,1500) /100.0;

if (sign> = noll + i) {countleds = map (ลงชื่อ, noll + i, 1023, 9, 14);
// ถ้าผลลัพธ์ที่ได้รับอยู่ในส่วนที่ 9-15 ของสเกล
เสียง (6, นับ * 100);}
if (sign <= noll - i) {countleds = map (เครื่องหมาย, 0, noll - i, 0, 7)
// ถ้าผลลัพธ์ที่ได้คือ 0-7 เซกเมนต์ของเครื่องชั่ง
เสียง (6, นับ * 50); }
if (sign = noll - (i-1)) {countleds = 7;
ไม่มี (6); } // islet ของ ZERO เสมือน (7 ส่วน)
if (sign> noll && sign <= noll + (i-1)) {countleds = 8;
ไม่มี (6); } // island of virtual ZERO scale (8 ส่วน)


{lcd.setCursor (countleds, 0); // ตั้งค่าเคอร์เซอร์เป็นคอลัมน์ countleds, บรรทัด 0
lcd.print ("\ xff"); // กรอกไอคอน
lcd.setCursor (0, 1); // เลื่อนไปที่ 2 แถว, คอลัมน์ -0
lcd.print (อักขระ (1)); // สัญลักษณ์ของแบตเตอรี่
lcd.setCursor (1, 1); // เลื่อนไปที่ตัวบ่งชี้แรงดันไฟฟ้า
lcd.print (แรงดันไฟฟ้า) // แรงดันไฟฟ้า
lcd.setCursor (7, 0); // คอลัมน์ที่ 8 แถวที่ 1
if (sign lcd.setCursor (8, 0); // คอลัมน์ที่ 9 แถวที่ 1
if (sign> noll) {lcd.print ("}");} // พิมพ์
lcd.setCursor (7, 1);
lcd.print ("B =");
lcd.setCursor (9, 1); // 11 คอลัมน์แถวที่ 2
lcd.print (i); // อุปสรรค
lcd.setCursor (13, 1); // คอลัมน์ที่ 13 แถวที่ 2
lcd.print (เครื่องหมาย); // พิมพ์ค่าเฉลี่ยของค่า ADC
ล่าช้า (10); // รอ

buttonState1 = digitalRead (button1); // อ่านปุ่มสถานะ 1
buttonState2 = digitalRead (button2); // อ่านสถานะปุ่ม 2
if (buttonState1 == LOW) {i = i + 1; ล่าช้า (50);}
// เมื่อกดปุ่มสิ่งกีดขวางก็จะเพิ่มขึ้น 1 หน่วงเวลา 50
if (buttonState2 == LOW) {i = i - 1; ล่าช้า (50);}
// เมื่อกดปุ่มสิ่งกีดขวางจะลดลง 1 หน่วงเวลา 50
if (i <1) {i = 1;} // ขอบเขตล่างของสิ่งกีดขวาง
if (i> 38) {i = 38;} // ขอบเขตบนสุดของสิ่งกีดขวาง

lcd.clear ();
}
}
ผู้เขียน
ร่างใหม่ อัลกอริทึมสำหรับการตรวจจับสัญญาณที่มีประโยชน์ได้รับการเปลี่ยนแปลง แบบแผนนั้นง่ายขึ้นไม่มีองค์ประกอบ D3.4 และ D3.3 พร้อมการรวมทั้งหมด หากคุณใช้ตราของคุณเองรายละเอียดเหล่านี้ทั้งหมดก็ไม่สามารถติดตั้งได้ ความไวมากขึ้น ไม่มีผลบวกปลอม
วาด:

// อินพุตแบบอะนาล็อก A3 สำหรับโวลต์มิเตอร์ Settable โดย potentiometer R32
// สัญญาณอะนาล็อก A4- สำหรับสัญญาณตั้งค่าด้วยสัญญาณขั้นต่ำใน D3.2
// resistor R40 สำหรับการอ่านค่า ADC ประมาณ 510
// 6- ข้อสรุปของสวนสัตว์
// 9 - ความถี่ขาออก 31200 Hz
#include
จอแอลซีดีคริสตัลเหลว (12, 11, 5, 4, 3, 2);

byte z1 [8] = {// ไอคอนแบตเตอรี่
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
int countleds = 0; // variable เพื่อเก็บค่าระดับสเกล

แรงดันลอย = 0.0; // แรงดันไฟฟ้าที่คำนวณได้
const int button1 = 7; // ปุ่ม barrier plus
const int button2 = 8; // ปุ่มสิ่งกีดขวางลบ
int i = 5; // อุปสรรค
const float K = 0.1; // ตัวกรองการติดตามการเปลี่ยนแปลงที่รวดเร็ว (สัมประสิทธิ์ยิ่งน้อยยิ่งแข็งแกร่ง)
const ลอย L = 0.07; // ตัวกรองการติดตามการเปลี่ยนแปลงเป็นเวลานาน
เครื่องหมายลอย = 0; // ตัวกรอง
float noll = 0;

การตั้งค่าเป็นโมฆะ () {
lcd.begin (16, 2); // แสดงการเริ่มต้น
lcd.createChar (1, z1);
pinMode (9, OUTPUT);
pinMode (6, OUTPUT);
TCCR1A = TCCR1A & 0xe0 | 2;
TCCR1B = TCCR1B & 0xe0 | 0x09;
analogWrite (9, 126); // ที่ขา 10 PWM = 50% f = 31200Hz
// ในความเป็นจริงสำหรับ PWM = 50% คุณจำเป็นต้องตั้งค่าการเติมอย่างน้อย 220 รายการตามสโคป
// duin ไม่สามารถจัดการกับมันได้ สิ่งนี้ไม่สำคัญ
}
ผู้เขียน
ผู้ที่จะดูร่าง สัญญาณ> = และ <= ถูกแทนที่โดยชุดค่าผสมแปลกของ & gt และ & lt ทำไมฉันไม่รู้ เมื่อทำการดีบั๊กเป็นปกติ

เราแนะนำให้คุณอ่าน:

มอบให้กับสมาร์ทโฟน ...