جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
هل سبق لك أن أردت طريقة آلية لاكتشاف لون كائن ما؟ من خلال تسليط ضوء بلون معين على الكائن والنظر إلى مقدار الضوء المنعكس مرة أخرى ، يمكنك معرفة لون الكائن. على سبيل المثال ، إذا قمت بإلقاء ضوء أحمر على جسم أحمر ، فسوف ينعكس هذا الضوء مرة أخرى. إذا قمت بتسليط ضوء أزرق على جسم أحمر ، فسوف يمتص الكائن بعضًا من هذا الضوء وسينعكس القليل منه مرة أخرى.
الخطوة 1: الأجزاء المطلوبة
لقد استخدمت متحكمًا دقيقًا PIC 16F887 ، ولكن تقريبًا أي وحدة تحكم ذات إمكانية تعديل عرض النبضة ستعمل. 1 RGB LED1 متحكم 1 LED أحمر قياسي 1 1 كيلو أوم المقاوم 1 مقاوم ضوئي (يتغير المقاومة اعتمادًا على مقدار الضوء الذي يضيء عليه) بعض الأسلاك أحتاج فقط إلى متحكم و RGB LED للحصول على مجموعة واسعة من أجهزة الكشف عن الألوان ، ولكن إذا كنت تريد فقط دائرة ذلك يكتشف لونًا واحدًا ، فأنت لست بحاجة إلى متحكم دقيق - فأنت تحتاج فقط إلى مؤشر LED ساطع للون الذي تريد اكتشافه. مؤشر LED الأحمر القياسي هو "مؤشر LED" - يضيء عند اكتشاف اللون الصحيح.
الخطوة الثانية: بناء الدائرة
التخطيطي بسيط نوعًا ما ، وفي الشكل العام ، موضح أدناه. يتم تشغيل RGB LED خارجيًا بواسطة إشارة PWM ، لقد وضعت شريطًا كهربائيًا حول المقاوم الضوئي حتى لا يدخل الضوء المحيط - سيتم اكتشاف الضوء الموجود فوقه مباشرة فقط.
الخطوة الثالثة: الكود
تمت كتابة هذا الرمز لـ Microchip PIC 16F887 ، ولكن نأمل أن تحصل على الفكرة العامة. لقد استخدمت مقياس الجهد المدمج في لوحة التطوير الخاصة بي لتغيير طيف ألوان RGB LED (ولا يمر عبر الطيف الكامل لأنني لا أمتلك 3 وحدات PWM ، لكنها جيدة بما يكفي) تم تضمين التعليقات. # تضمين # تضمين # تضمين البايت CCP2CON = 0x1D # بايت PWM1CON = 0x9Bint value = 128 ؛ int p1 = 0 ؛ int p2 = 0 ؛ void my_setup_ccp1 (قيمة int8) {output_low (PIN_C2) ؛ CCP1CON = القيمة ؛ PWM1CON = 0 ؛} قيمة my_setup_ccp2 باطلة {output_low (PIN_C1) ؛ CCP2CON = القيمة ؛} // =================================== باطل رئيسي () {// A4 = مصدر الطاقة للصورة الضوئية Output_high (PIN_A4) ؛ الإخراج_عالي (PIN_B1) ؛ setup_adc (ADC_CLOCK_INTERNAL) ؛ set_adc_channel (0) ؛ setup_adc_ports (sAN0) ؛ // Timer / Interrupt setupenable_interrupts (INT_TIMER2) ؛ my_setup_ccp2 (CCP_PWM)؛ setup_timer_2 (T2_DIV_BY_1، 128، 1)؛ // setup_compare (2، COMPARE_PWM | COMPARE_TIMER2) ؛ بينما (1) {// منع PIC من النوم. // Pin A3 هو اتصال الثنائي الضوئي إذا (المدخلات (PIN_A3) == 1) output_high (PIN_A4) ؛ else output_low (PIN_A4) ؛ // اقرأ قيمة مقياس الجهد لتغيير لون قيمة LED = read_adc () ؛ التبديل (القيمة) {الحالة 0: p1 = القيمة ؛ output_low (PIN_C0) ؛ p2 = القيمة ؛ استراحة؛ الحالة 50: p1 = القيمة ؛ output_high (PIN_C0) ؛ p2 = القيمة ؛ استراحة؛ الحالة 100: p1 = القيمة ؛ output_high (PIN_C0) ؛ p2 = القيمة ؛ استراحة؛ الحالة 150: output_high (PIN_C0) ؛ p1 = 50 ؛ p2 = القيمة ؛ استراحة؛ الحالة 200: output_low (PIN_C0) ؛ p1 = 0 ؛ p2 = القيمة ؛ استراحة؛ الحالة 250: p1 = 0 ؛ p2 = القيمة ؛ output_low (PIN_C0) ؛ استراحة؛ } p1 = القيمة ؛ ع 2 = 128 - ف 1 ؛ set_pwm1_duty (p1) ؛ set_pwm2_duty (p2) ؛}}
الخطوة 4: التطبيقات
يمكن استخدام كاشف ألوان بسيط مثل هذا في الروبوتات ، أو للمشاريع الرائعة مثل فصل ليغو حسب اللون ، أو فرز M & Ms ، أو كعامل مساعد لعمى الألوان. نأمل أن تكون هذه التعليمات مفيدة في تحسين مشروع تفكر فيه!:) المصابيح جيدة لأشياء كثيرة….