top of page
فريق العمل
About

عبدالله عقيلي

Services


عبدالرحمن جعوني
علي يتيم
يحيى جعوني
اشراف المهندس
ايمن ابراهيم كيفي
نظرة عامة عن المشروع
يتكون المشروع من طاولة خشبية محاطة بالليدات المضيئة من الداخل
و التي تتصلmpr121 مع حساس اللمس
مما يجعل الليدات تضيئ بمجرد لمس الحساس و تختلف طريقة الاضاءة في كل فرع من فروع الحساس فبعضها يضيئ تدريجيا والبعض الاخر يضيئ دفعة واحدة مع مراعاة اختلاف اللون وشدة الاضاءة بالاضافة الى مدة الاضاءة
القطع المستخدمة في المشروع
-
An Arduino board 75SR,
-
A custom PCB, connected to a 5V power supply 20SR
-
touch sensor MPR121. 100SR
-
Jumper wire .20SR
-
strips led . 120 SR

Jumper Wire

STRIP LED

MPR touch sensor 121

ARDUINO
للمزيد من المعلومات عن الاردينو
schmitic

مرحلة الطباعة

مرحلة الاظهار




مرحلة التخريم


التركيب و اللحام


code
#include <Wire.h>
#include "Adafruit_MPR121.h"
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#define PIXEL_PIN 12 // Digital IO pin connected to the NeoPixels.
matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(0, 0, 255) };
Serial.begin(9600);
if (!cap.begin)) {
Serial.println("MPR121 not found, check wiring?");
while (1);
}
Serial.println("MPR121 found!");
matrix.begin();
strip.begin();
strip.show(); // Initialize all pixels to 'off'
}
if (cap.touched() & (1 << 0))
{
//////////
/////////////
colorWipe(strip.Color(255, 0, 0), 50);
//theaterChaseRainbow(50);
Serial.println("key 4 touched!");
// delay(1000);
colorWipe(strip.Color(0, 0, 0), 50); // Black/off
}
if (cap.touched() & (1 << 1))
{
colorWipe(strip.Color(0, 255, 0), 50);
//theaterChaseRainbow(50);
Serial.println("key 4 touched!");
// delay(1000);
colorWipe(strip.Color(0, 0, 0), 50); // Black/off
}
if (cap.touched() & (1 << 2))
{
colorWipe(strip.Color(0, 0, 255), 50);
//theaterChaseRainbow(50);
Serial.println("key 4 touched!");
// delay(1000);
colorWipe(strip.Color(0, 0, 0), 50); // Black/off
}
if (cap.touched() & (1 << 3))
{
theaterChase(strip.Color(127, 127, 127), 50);
//theaterChaseRainbow(50);
Serial.println("key 4 touched!");
// delay(1000);
//colorWipe(strip.Color(0, 0, 0), 50); // Black/off
}
if (cap.touched() & (1 << 4))
{
theaterChase(strip.Color(127, 0, 127), 50);
//theaterChaseRainbow(50);
Serial.println("key 4 touched!");
// delay(1000);
//colorWipe(strip.Color(0, 0, 0), 50); // Black/off
}
if (cap.touched() & (1 << 5))
{
theaterChase(strip.Color(115, 0, 0), 50); // Red
//theaterChaseRainbow(50);
Serial.println("key 4 touched!");
// delay(1000);
// colorWipe(strip.Color(0, 0, 0), 50); // Black/off
}
if (cap.touched() & (1 << 6))
{
rainbow(20);
//theaterChaseRainbow(50);
Serial.println("key 4 touched!");
// delay(1000);
colorWipe(strip.Color(0, 0, 0), 50); // Black/off
}
if (cap.touched() & (1 << 7))
{
theaterChase(strip.Color( 0, 0, 127), 50); //
//theaterChaseRainbow(50);
Serial.println("key 4 touched!");
// delay(1000);
// colorWipe(strip.Color(0, 0, 0), 50); // Black/off
}
if (cap.touched() & (1 << 8))
{
theaterChase(strip.Color( 0, 200, 127), 50); // Blue
//theaterChaseRainbow(50);
Serial.println("key 4 touched!");
// delay(1000);
// colorWipe(strip.Color(0, 0, 0), 50); // Black/off
}
if (cap.touched() & (1 << 9))
{
rainbowCycle(20);
//theaterChaseRainbow(50);
Serial.println("key 4 touched!");
// delay(1000);
colorWipe(strip.Color(0, 0, 0), 50); // Black/off
}
if (cap.touched() & (1 << 10))
{
rainbow(20);
//theaterChaseRainbow(50);
Serial.println("key 4 touched!");
// delay(1000);
colorWipe(strip.Color(0, 0, 0), 50); // Black/off
}
if (cap.touched() & (1 << 11))
{
theaterChaseRainbow(50);
//theaterChaseRainbow(50);
Serial.println("key 4 touched!");
// delay(1000);
// colorWipe(strip.Color(0, 0, 0), 50); // Black/off
}
//lasttouched = currtouched;
delay(1000);
matrix.fillScreen(0);
matrix.setCursor(x, 0);
matrix.print(F("CTE JEDDAH"));
حدد الرجل 12 لليدات ووصلها للمداخل الرقمية
في مصفوفة الالوان لدينا اعلى قيمة تساوي 255 و اقل قيمة تساوي الصفر
معدل سرعة البيانات 9600
اذا لم توجد لمسة على الحساس
اذا وجدت اللمسة على الحساس
تبدأ المصفوفة
في حال وجود اللمسة وكانت اللمسة على الحساس رقم صفر

نستطيع في البرمجه ان نختصر و نشتق الالوان من ثلاثة الوان رئيسية وهي الاحمر و الاخضر والازرق وفي الحالة التي يأتي فيها الامر على الصورة التالية ,255,0,0
يتم تشغيل اللون الاحمر لانه يشغل القيمة الاعلى بينما الاخضر و الازرق صفر
R G B
من ثم يتم التاخير لمدة ثانية واحدة و تعود جميع
الليدات الى اقل قيمة الصفر = الاسود
off
في حال وجود اللمسة وكانت على الطرف رقم 1 من الحساس
ستكون القيمة الاعلى للون الاخضر وبالتالي ستضاء الطاولة باللون الاخضر
من ثم يت م التاخير لمدة ثانية واحدة و تعود جميع
الليدات الى اقل قيمة الصفر = الاسود
off

اذا وجدت اللمسة وكانت على الحساس 2
ستكون القيمة الاعلى للون الازرق و بالتالي ستضيء الطاولة باللون الازرق

من ثم يتم التاخير لمدة ثانية واحدة و تعود جميع
الليدات الى اقل قيمة الصفر = الاسود
off
اذا كانت اللمسة على الحساس الثالث
يتم استدعاء الدالة
THATER CHASE
و يتم دمج الالوان الثلاثه بقيمة 127 لكل لون و التي تنتج لنا اللون الابيض الظاهر في الصورة المقابلة

من ثم يتم التاخير لمدة ثانية واحدة و تعود جميع
الليدات الى اقل قيمة الصفر = الاسود
off
اذا وجدت لمسة على الحساس 4
يتم استدعاء الدالة
THATER CHASE
و يتم دمج اللونين الاحمر و الازرق لنحصل على اللون الظاهر في الصورة المقابلة
من ثم يتم التاخير لمدة ثانية واحدة و تعود جميع
الليدات الى اقل قيمة الصفر = الاسود
off

اذا وجدت اللمسة وكانت على الحساس 5
يتم استدعاء الدالة
THATER CHASE
و يتم اختيار اللون الاحمر بدرجة 115 لنحصل على اللون الظاهر في الصورة المقابلة
من ثم يتم التاخير لمدة ثانية واحدة و تعود جميع
الليدات الى اقل قيمة الصفر = الاسود
off
اذا وجدت اللمسة وكانت على الحساس 6
يتم استدعاء الدالة
THEATER CHASE RAINBOW
و التي تظهر اللون المتدرج على هيئة الوان الطيف الظاهر في الصورة المقابلة


من ثم يتم التاخير لمدة ثانية واحدة و تعود جميع
الليدات الى اقل قيمة الصفر = الاسود
off
اذا وجدت اللمسة وكانت على الحساس 7
يتم استدعاء الدالة
THATER CHASE
و يتم دمج اللون الازرق بقيمة 127 و التي تنتج لنا اللون الظاهر في الصورة المقابلة

من ثم يتم التاخير لمدة ثانية واحدة و تعود جميع
الليدات الى اقل قيمة الصفر = الاسود
off
اذا وجدت اللمسة وكانت على الحساس 8
يتم استدعاء الدالة
THATER CHASE
و يتم دمج اللونين الازرق و الاخضر بقيمة ,200,127 و التي تنتج لنا اللون الظاهر في الصورة
المقابلة
من ثم يتم التاخير لمدة ثانية واحدة و تعود جميع
الليدات الى اقل قيمة الصفر = الاسود
off

اذا وجدت اللمسة
وكانت على الحساس 9
يتم استدعاء الدالة
theater chaser rainbow
والتي تنتج لنا الوان الطيف
من ثم يتم التاخير لمدة ثانية واحدة و تعود جميع
الليدات الى اقل قيمة الصفر = الاسود
off

اذا وجدت اللمسة
وكانت على الحساس 10
يتم استدعاء الدالة
theater chaser rainbow
والتي تنتج لنا الوان الطيف
من ثم يتم التاخير لمدة ثانية واحدة و تعود جميع
الليدات الى اقل قيمة الصفر = الاسود
off
اذا وجدت اللمسة
وكانت على الحساس 11
يتم استدعاء الدالة
theater chaser rainbow
والتي تعرض لنا جميع الالوان على هيئة صناديق و تتغير درجة الالوان
من ثم يتم التاخير لمدة ثانية واحدة و تعود جميع
الليدات الى اقل قيمة الصفر = الاسود
off
uint16_t
void rainbow(uint8_t wait) {
}
}
delay(wait);
strip.show();
strip.setPixelColor(i, c);
for (uint16_t i = 0; i < strip.numPixels(); i++) {
void colorWipe(uint32_t c, uint8_t wait) {
// Fill the dots one after the other with a color
}
delay(100);
matrix.show();
}
matrix.setTextColor(colors[pass]);
if(++pass >= 3) pass = 0;
x = matrix.width();
if(--x < -65) {i, j;
for (j = 0; j < 256; j++) {
for (i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel((i + j) & 255));
}
strip.show();
delay(wait);
}
}
// Slightly different, this makes the rainbow equally distributed throughout
void rainbowCycle(uint8_t wait) {
uint16_t i, j;
for (j = 0; j < 256 * 5; j++) { // 5 cycles of all colors on wheel
for (i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
}
strip.show();
delay(wait);
}
}
//Theatre-style crawling lights.
void theaterChase(uint32_t c, uint8_t wait) {
for (int j = 0; j < 40; j++) { //do 10 cycles of chasing
for (int q = 0; q < 2; q++) {
for (int i = 0; i < strip.numPixels(); i = i + 2) {
strip.setPixelColor(i + q, c); //turn every third pixel on
}
strip.show();
delay(wait);
for (int i = 0; i < strip.numPixels(); i = i + 2) {
strip.setPixelColor(i + q, 0); //turn every third pixel off
}
}
}
}
//Theatre-style crawling lights with rainbow effect
void theaterChaseRainbow(uint8_t wait) {
for (int j = 0; j < 256; j++) { // cycle all 256 colors in the wheel
for (int q = 0; q < 3; q++) {
for (int i = 0; i < strip.numPixels(); i = i + 3) {
strip.setPixelColor(i + q, Wheel( (i + j) % 255)); //turn every third pixel on
}
strip.show();
delay(wait);
for (int i = 0; i < strip.numPixels(); i = i + 3) {
strip.setPixelColor(i + q, 0); //turn every third pixel off
}
}
}
}
// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
}
اذا لم يتم ضغط اي حساس لمدة ثانية واحدة سيتم طباعة كلمة
CTE JEDDAH على الشاشة بالكامل
مستدعياً الدالة RAINBOW
لتنفيذ الالوان
ثم باستدعاء الدالة Matrix.show
يتم عرض الكلمة على الشاشة


يمكن ان نطور مشروعنا في المستقبل بشكل واسع جدا فالابمكان اضافة الالعاب التشويقيه واضافة كلمات تصلح للمحلات التجارية ويمكن استخدامها كلوحة تعليمات
:تطوير المشروع في المستقبل
.
الشكل النهائي للمشروع

تكلفة المشروع
320 sr
1 hr
٧٠ دولار أمريكي1 hr 30 min
١٢٠ دولار أمريكي45 min
٩٠ دولار أمريكي1 hr
٨٠ دولار أمريكي2 hr
٩٠ دولار أمريكي1 hr
٧٠ دولار أمريكي
bottom of page


