طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 251 · برمجة الأجهزة الذكية
الدرس 14 · الوحدة 7: مفاهيم التفاعل مع المستشعرات والأجهزة الذكية

أنواع المستشعرات: الضوء والتسارع والموقع والكاميرا

خريطة المستشعرات واختيار الصحيح للمهمّة. ⏱ نحو 35 دقيقة.

بعد هذا الدرس ستستطيع أن:
  • تصنّف المستشعرات (حركيّ، بيئيّ، موضعيّ، بصريّ، طاقة).
  • تقرأ عدّة مستشعراتٍ في واجهةٍ واحدة.
  • تختار المستشعر المناسب للمهمّة وتراعي الطاقة.

١خريطة المستشعرات

قبل أن نتعمّق في كلٍّ على حدة، لنرسم خريطةً شاملة. المستشعرات أنواع: حركيّة (تسارع، جيروسكوب)، وبيئيّة (ضوء، حرارة)، وموضعيّة (GPS، بوصلة)، وبصريّة (كاميرا):

النوعالمستشعرالوحدةمثال تطبيق
حركيّالتسارع Accelerometerدرجات/تسارعألعاب، عدّ خطوات
بيئيّالضوء Lightلَكس (lux)سطوع تلقائيّ
موضعيّالموقع GPSعرض/طولخرائط، توصيل
بصريّالكاميرا Cameraصورة/فيديومسح QR، تصوير
طاقةالبطارية Batteryنسبة %ترشيد الأداء

٢لوحة قيادة: مستشعران معًا

تطبيقٌ قد يقرأ عدّة مستشعراتٍ في آنٍ واحد. هنا نجمع الضوء والإمالة في لوحةٍ واحدة. حرّك المنزلقين:

import { View, Text, StyleSheet } from 'react-native';import { useLight, useTilt } from 'smartdevice'; function Gauge({ label, value, unit }) {  return (    <View style={styles.g}>      <Text style={styles.lbl}>{label}</Text>      <Text style={styles.val}>{value}{unit}</Text>    </View>  );} export default function App() {  const light = useLight();  const { x, y } = useTilt();  return (    <View style={styles.row}>      <Gauge label="الضوء" value={light} unit=" lux" />      <Gauge label="الإمالة x" value={x} unit="°" />      <Gauge label="الإمالة y" value={y} unit="°" />    </View>  );} const styles = StyleSheet.create({  row: { flexDirection: 'row', gap: 8, padding: 12, justifyContent: 'center' },  g: { backgroundColor: '#FFF3E0', borderRadius: 12, padding: 12, alignItems: 'center', minWidth: 80 },  lbl: { color: '#666', fontSize: 13 },  val: { fontSize: 20, fontWeight: 'bold', color: '#E8820C', marginTop: 4 },});

مكوّن Gauge واحد يُعاد استخدامه لثلاث قراءات — props + مستشعرات.

٣اختيار المستشعر المناسب

المهارة ليست قراءة مستشعرٍ فحسب، بل اختيار الصحيح للمهمّة:

تريد…المستشعر الصحيح
معرفة إن كان الجهاز مستويًاالتسارع (الإمالة)
تعتيم الشاشة ليلًاالضوء
عرض متاجر قريبةالموقع GPS
مسح رمز QRالكاميرا
تحذير «اشحن»البطارية

توقّع وتحقّق

وحدة قياس الضوء:

لمعرفة إن كان الجهاز مستويًا:

لعرض متاجر قريبة:

أكثر المستشعرات استهلاكًا للطاقة غالبًا:

الخلاصة

تحدٍّ برمجي: لوحة مستشعرين

متوسط

اعرض قراءتَي الضوء والإمالة معًا.

المطلوب:
  • استورد useLight وuseTilt.
  • <Text testID="light"> يعرض قيمة الضوء.
  • <Text testID="tx"> يعرض الإمالة x.
👀 اعرض الناتج المطلوب (وجرّبه)
✓ التحقق الآلي من حلّك:
  • الكود يعمل بلا أخطاء في Console
  • الضوء الابتدائيّ 70
  • الإمالة x الابتدائيّة 0
  • استُخدم useLight
  • استُخدم useTilt

💡 تلميح 1
القيَم الابتدائيّة: ضوء 70، إمالة 0.
💡 تلميح 2
استورد الخطّافين معًا من smartdevice.

حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.

import { View, Text, StyleSheet } from 'react-native';import { useLight, useTilt } from 'smartdevice'; export default function App() {  const light = useLight();  const { x } = useTilt();  return (    <View style={{ padding: 20, gap: 8 }}>      <Text testID="light" style={styles.v}>الضوء: {light} lux</Text>      <Text testID="tx" style={styles.v}>الإمالة x: {x}°</Text>    </View>  );} const styles = StyleSheet.create({ v: { fontSize: 18, fontWeight: 'bold', color: '#E8820C' } });
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس