วิศวกรรมย้อนกลับและรีมิกซ์เพื่อน Hasbro Furreal "Squawkers McGraw" Animatronic Parrot
![]() | ![]() | ![]() |
มีสวิตช์และอินพุตเซ็นเซอร์ที่หลากหลายดังนี้:
การเคลื่อนไหวทั้งหมดจะถูกควบคุมผ่านมอเตอร์งานอดิเรก DC เพียงสองตัวเท่านั้น ด้วยการใช้ระบบ CAM ที่ฉลาดการย้อนกลับทิศทางของมอเตอร์สามารถกระตุ้นแอคชูเอเตอร์ที่แตกต่างกัน
คอนโทรลเลอร์มีสวิตช์ตำแหน่งสามปุ่มปุ่มโหมดเล่นสามปุ่มปุ่มโปรแกรม 6 ปุ่มและปุ่มบันทึกที่กำหนดเอง ดูเหมือนว่าจะออกอากาศสตริงคำสั่งโดยใช้ความถี่ 38kHz ทั่วไป สำหรับวิธีการที่ไม่ทำลายในการควบคุม Squawkers McGraw คุณสามารถส่งรหัสคำสั่งเดียวกันนี้เพื่อกระตุ้นพฤติกรรมใด ๆ ในตัว
สตริงคำสั่งต่อไปนี้ถูกคว้าโดยใช้ Arduino และรหัสวิเคราะห์สัญญาณอินฟราเรดที่อธิบายไว้ที่ https://www.patreon.com/posts/infrared-puzzle-2834366
// Repeat Button
unsigned int repeatData[17] = {3000,3000,1000,2000,1000,2000,1000,2000,1000,2000,2000,1000,1000,2000,2000,1000,1000};
// Dance (same in every mode)
unsigned int danceData[17] = {3000,3000,1000,2000,2000,1000,1000,2000,2000,1000,2000,1000,1000,2000,2000,1000,1000};
// Reset (same in every mode)
unsigned int resetData[17] = {3000,3000,1000,2000,2000,1000,2000,1000,1000,2000,1000,2000,2000,1000,1000,2000,1000};
// Buttons
unsigned int aData[17] = {3000,3000,1000,2000,1000,2000,1000,2000,1000,2000,2000,1000,1000,2000,2000,1000,1000};
unsigned int bData[17] = {3000,3000,1000,2000,1000,2000,1000,2000,2000,1000,1000,2000,2000,1000,1000,2000,1000};
unsigned int cData[17] = {3000,3000,1000,2000,1000,2000,1000,2000,2000,1000,2000,1000,2000,1000,2000,1000,1000};
unsigned int dData[17] = {3000,3000,1000,2000,1000,2000,2000,1000,1000,2000,2000,1000,1000,2000,1000,2000,1000};
unsigned int eData[17] = {3000,3000,1000,2000,1000,2000,2000,1000,2000,1000,1000,2000,1000,2000,2000,1000,1000};
unsigned int fData[17] = {3000,3000,1000,2000,1000,2000,2000,1000,2000,1000,2000,1000,2000,1000,1000,2000,1000};
// Custom Record
unsigned int customRecordData[17] = {3000,3000,1000,2000,2000,1000,2000,1000,1000,2000,2000,1000,2000,1000,2000,1000,1000};
// Repeat Button (same for Command and Gags)
unsigned int repeatData[17] = {3000,3000,1000,2000,2000,1000,1000,2000,1000,2000,1000,2000,2000,1000,2000,1000,1000};
// Dance (same in every mode)
unsigned int danceData[17] = {3000,3000,1000,2000,2000,1000,1000,2000,2000,1000,2000,1000,1000,2000,2000,1000,1000};
// Reset (same in every mode)
unsigned int resetData[17] = {3000,3000,1000,2000,2000,1000,2000,1000,1000,2000,1000,2000,2000,1000,1000,2000,1000};
// Buttons
unsigned int aData[17] = {3000,3000,1000,2000,1000,2000,1000,2000,1000,2000,2000,1000,2000,1000,1000,2000,1000};
unsigned int bData[17] = {3000,3000,1000,2000,1000,2000,1000,2000,2000,1000,1000,2000,2000,1000,2000,1000,1000};
unsigned int cData[17] = {3000,3000,1000,2000,1000,2000,2000,1000,1000,2000,1000,2000,1000,2000,1000,2000,1000};
unsigned int dData[17] = {3000,3000,1000,2000,1100,2000,2000,1000,1000,2000,2000,1000,1100,2000,2000,1000,1000};
unsigned int eData[17] = {3000,3000,1000,2000,1000,2000,2000,1000,2000,1000,1000,2000,2000,1000,1000,2000,1000};
unsigned int fData[17] = {3000,3000,1000,2000,1000,2000,2000,1000,2000,1000,2000,1000,2000,1000,2000,1000,1000};
// Custom Record [same as Response]
unsigned int customRecordData[17] = {3000,3000,1000,2000,2000,1000,2000,1000,1000,2000,2000,1000,2000,1000,2000,1000,1000};
// Repeat Button (same for Command and Gags)
unsigned int repeatData[17] = {3000,3000,1000,2000,2000,1000,1000,2000,1000,2000,1000,2000,2000,1000,2000,1000,1000};
// Dance (same in every mode)
unsigned int danceData[17] = {3000,3000,1000,2000,2000,1000,1000,2000,2000,1000,2000,1000,1000,2000,2000,1000,1000};
// Reset (same in every mode)
unsigned int resetData[17] = {3000,3000,1000,2000,2000,1000,2000,1000,1000,2000,1000,2000,2000,1000,1000,2000,1000};
// Buttons
unsigned int aData[17] = {3000,3000,1000,2000,1000,2000,1000,2000,1000,2000,2000,1000,2000,1000,2000,1000,1000};
unsigned int bData[17] = {3000,3000,1000,2000,1000,2000,1000,2000,2000,1000,2000,1000,1000,2000,1000,2000,1000};
unsigned int cData[17] = {3000,3000,1000,2000,1000,2000,2000,1000,1000,2000,1000,2000,1000,2000,2000,1000,1000};
unsigned int dData[17] = {3000,3000,1000,2000,1000,2000,2000,1000,1000,2000,2000,1000,2000,1000,1000,2000,1000};
unsigned int eData[17] = {3000,3000,1000,2000,1000,2000,2000,1000,2000,1000,1000,2000,2000,1000,2000,1000,1000};
unsigned int fData[17] = {3000,3000,1000,2000,2000,1000,1100,2000,1000,2000,1000,2000,1000,2000,1000,2000,1000};
// Custom Record
unsigned int customRecordData[17] = {3000,3000,1000,2000,2000,1000,1000,2000,1000,2000,1000,2000,1000,2000,1000,2000,1000};
ในการปรับแต่งพฤติกรรมของนกแก้วอย่างสมบูรณ์นั้นต้องมีการดัดแปลงที่ทำลายล้างมากขึ้น - ทำลายการเชื่อมต่อไปยังบอร์ดควบคุมและแทนที่อินพุตและเอาต์พุตไปยังโปรเซสเซอร์เช่น Arduino ดังนี้:
โปรดทราบว่าเซ็นเซอร์แต่ละตัวที่แสดงให้เห็นจริง ๆ แล้วประกอบด้วยคู่ของสายไฟ - สัญญาณอินพุตหนึ่งสัญญาณและสายกราวด์หนึ่ง (พร้อมคอนโทรลเลอร์ที่มี onboard input_pullups สำหรับเมื่ออินพุตไม่ถูกทริกเกอร์) รหัสที่ใช้ในการควบคุมคอนโทรลเลอร์ที่แก้ไขดังกล่าวจะแสดงให้เห็นในภาพร่าง Arduino .ino ในที่เก็บนี้