קורס אמבדד – RB19-01 מבוא למיקרובקרים – תכנות ואלקטרוניקה – סביבת ארדואינו
הקורס הינו קורס מבוא : בסביבת ארדואינו ומבוא בתכנות בשפת C
- תכנות בשפת C – (משלב מבוא לתכנות )
- מבוא לאלקטרוניקה
- תכנות אמבדד – תוכנה מחוברת לאלקטרוניקה וביצוע פעלות בזמן אמת
- מבוא למיקרובקרים רכיבים ומודולים אלקטרונים לרבות מנועים משדרים מסכים
- שידור וקליטה של מידע דיגיטאלי – WIFI BLUETOOTH SUBGIGA
- מבוא לרובוטיקה
אנחנו בקורס נילמד על ערכת פיתוח ESP32-DevKitC-32E (נכיר גם מעבדים וערכות פיתוח נוספות)
מטרות :
1 .פיתוח מערכות אלקטרוניות משובצות מחשב , תרגול ושליטה בשפת C אמבדד בסביבות שונות .
2. העשרה והכרה של רכיבים אלקטרונים
3.העשרה והכרה של מיקרומעבדים שונים
4. העשרת השפה האנגלית בתחום האמבדד .
5. יכולת ניתוח מוצרים קיימים , בלוק דיאגרם של מוצר והערכת עלות וזמן פיתוח אב טיפוס ראשוני .
6.פיתוח מערכת שלמה מבוססת אמבדד , אמבדד RF
בקורס נעסוק במספר מעבדים בשימוש של ערכות פיתוח :
ערכות פיתוח של מעבדים :
(מה ההבדל בין ערכת פיתוח – למיקרו מעבד ?)
ערכת פיתוח של STM32
מיקרומעבד ESP32 החזק ביותר – ביצועים : מחיר
אנחנו בקורס נילמד על ערכת פיתוח ESP32-DevKitC-32E
שימוש של ESP32 בתעשייה IOT :
https://www.espressif.com/en/support/documents/technical-documents
הפעלת תוכניות בשפת C בסימלטור ארדואינו – הבנה ראשונית
1. תרגיל כיתה 001 : כתיבה הודעה למסך – והפעלה כתיבה בסימולטור ארדואינו
קישור לקוד https://wokwi.com/projects/366608340180417537
יש ללחוץ על הכפתור הירוק על מנת להפעיל את התוכנה
2. תרגיל כיתה 002 : שימוש ב LOOP
https://wokwi.com/projects/366608976579042305
פלט
3. תרגיל כיתה 003 : הדלקה וכיבוי של לד (פלט)
קישור לתוכנית : https://wokwi.com/projects/350061244264219218
4. תרגיל כיתה 004 : הדלקת לד כאשר נלחץ הלחצן (פלט + קלט)
https://wokwi.com/projects/348323129018286675
5. מבוא למעגל אלקטרוני – בהקשר למיקרובקרים
- בטריה (מקור מתח )
- מתח – וולט ( אם נחלק ב 1000 זה מילי וולט )
- זהם – אמפר (אם נחלק ב 1000 זה מילי אמפר )
- מפל מתחים (כל צרכן מוריד מהמתח הכללי )
- כיוון זרימת האלקטרןנים (בפיתרון מעגלים מה פלוס למינוס – במציאות מהמינוס לפלוס)
- רכיבים : בטרייה , חוטי הולכה , מפסק , נגד , לד
- מעגל אידיאלי \ מעגל ריאלי בלי הזנחות לחוטים יש התנגדות לבטריה יש התנגדות פנימית לכל רכיב מודל מתמטי – נעסוק במעגלים אידיאלים , מתח עד 12 וולט , זרם ישר עד 2 אמפר .
6. במעגל אידאלי :
תרגיל כיתה 1
7. תרגיל כיתה 2
1.מה התנגדות הכוללת של המעגל ? (הנח : בטרייה אין התנגדות ולא לחוטים )
2. מה הזרם במעגל ?
3. מה הזרם בכל רכיב
8. תרגיל כיתה 3
- מה הזרם במעגל
9. תרגיל כיתה 4
- רשום מתח והתנגדות על כל צרכן
- סרטט מפל מתח , על כל רכיב
- מה המתח בנקודה A B C D (ראה באיור הבא )
- מה הזרם על כל רכיב
תשובה 3,4
10. תרגיל בית : יש לכתוב את קוד התוכנה לפי הסרטון , בעצמכם לאחר צפיה בסרטון
בהמשך הדף מצורף קוד מוכן
כתובת לסימולטור : https://wokwi.com/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
void setup() { // put your setup code here, to run once: Serial.begin(115200); Serial.println("Hello, robotronix.co.il"); pinMode (4, OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite (4, HIGH); // turn on the LED , HIGH = 3.3V delay(500); // 1000 = 1 SEC --> 1000ms digitalWrite (4, LOW); // turn on the LED , LOW = 0V delay(1000); // 1000 = 1 SEC --> 1000ms } |
קישור :
קישור ישיר לקוד
קישור לערכה:
chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf
מבנה הערכה : לכל פין יש מספר או שם
Pinout
תוכנה רגילה בשפת C
סימולטורים ושפת C
סימולטור : https://wokwi.com/ arduino
סימולטור שפת C :
https://www.interviewbit.com/online-c-compiler/
https://www.programiz.com/c-programming/online-compiler/
מבנה תוכנה אמבדד C embedded
פלט :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include "stm32g0xx_hal.h" #define LED_PIN GPIO_PIN_5 #define LED_GPIO_PORT GPIOA int main(void) { setup(); loop(); } void setup(void) { HAL_Init(); __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = LED_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct); } void loop(void) { while (1) { HAL_GPIO_TogglePin(LED_GPIO_PORT, LED_PIN); HAL_Delay(1000); } } void SysTick_Handler(void) { HAL_IncTick(); } Footer © 2022 GitHub, Inc. |
יצירת פולס מחזורי : (בין 0 ל מתח עבודה של מיקרו מעבד )
תרגיל בנה תוכנית בשפת C המייצרת את הפולס הבא
pky
קלט (+פלט)
שפת C – משפטי תנאי פשוטים
1 2 3 4 5 6 7 8 9 10 11 12 13 |
int sensorValue = 500; // Sample sensor value void setup() { Serial.begin(9600); } void loop() { if (sensorValue > 600) { Serial.println("Sensor value is greater than 600"); } delay(1000); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
int sensorValue = 500; // Sample sensor value void setup() { Serial.begin(9600); } void loop() { if (sensorValue > 600) { Serial.println("Sensor value is greater than 600"); } else { Serial.println("Sensor value is less than or equal to 600"); } delay(1000); } |
logical and
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
int temperature = 25; // Sample temperature value int humidity = 60; // Sample humidity value void setup() { Serial.begin(9600); } void loop() { if (temperature > 20 && humidity < 70) { Serial.println("Conditions are suitable."); } else { Serial.println("Conditions are not suitable."); } delay(1000); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
int temperature = 25; // Sample temperature value int humidity = 60; // Sample humidity value void setup() { Serial.begin(9600); } void loop() { if (temperature > 30 || humidity > 80) { Serial.println("Conditions are extreme."); } else { Serial.println("Conditions are within range."); } delay(1000); } |
AND TABLE
Input A | Input B | Output (A && B) |
---|---|---|
false | false | false |
false | true | false |
true | false | false |
true | true | true |
OR TABLE
Input A | Input B | Output (A || B) |
---|---|---|
false | false | false |
false | true | true |
true | false | true |
true | true | true |
AND OR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
void setup() { Serial.begin(9600); } void loop() { int sensorValue1 = analogRead(A0); // Sample sensor value 1 int sensorValue2 = analogRead(A1); // Sample sensor value 2 // Logical AND operation if (sensorValue1 > 500 && sensorValue2 < 300) { Serial.println("Condition for AND operator is satisfied."); } else { Serial.println("Condition for AND operator is not satisfied."); } // Logical OR operation if (sensorValue1 > 800 || sensorValue2 < 200) { Serial.println("Condition for OR operator is satisfied."); } else { Serial.println("Condition for OR operator is not satisfied."); } delay(1000); } |
שפת C – מחרוזות בסביבת ארדואינו
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
void setup() { Serial.begin(9600); } void loop() { char message[] = "welcome to www.robotronix.co.il"; int length = strlen(message); Serial.print("String Length: "); Serial.println(length); int i = 0; while (message[i] != '\0') { Serial.print(message[i]); i++; delay(200); } Serial.println(); delay(1000); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
const char pass1[] = "5494"; void setup() { Serial.begin(9600); Serial.println("Enter car key"); } void loop() { char carKey[10]; int index = 0; while (Serial.available() > 0) { char receivedChar = Serial.read(); if (receivedChar == '\n') { carKey[index] = '\0'; if (strcmp(carKey, pass1) == 0) { Serial.println("Correct code. Car open."); } else { Serial.println("Wrong code. Car lock."); } carKey[0] = '\0'; index=0; break; } carKey[index] = receivedChar; index++; if (index >= sizeof(carKey) - 1) { break; } } delay(1000); } |
1 2 3 4 5 6 7 8 9 |
void setup() { Serial.begin(9600); } void loop() { char message[] = "Hello, Arduino!"; Serial.println(message); delay(1000); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
void setup() { Serial.begin(9600); } void loop() { char greeting[] = "Hello, "; char name[] = "Arduino!"; char message[20]; strcpy(message, greeting); strcat(message, name); Serial.println(message); delay(1000); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
void setup() { Serial.begin(9600); } void loop() { char input[] = "Password123"; char password[] = "Password123"; if (strcmp(input, password) == 0) { Serial.println("Access granted!"); } else { Serial.println("Access denied!"); } delay(1000); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
void setup() { Serial.begin(9600); } void loop() { char message[] = "Hello, Arduino!"; int length = strlen(message); Serial.print("Length: "); Serial.println(length); delay(1000); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
void setup() { Serial.begin(9600); } void loop() { char message[] = "Hello, Arduino!"; message[7] = 'W'; Serial.println(message); delay(1000); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
void setup() { Serial.begin(9600); } void loop() { char message[] = "Hello, Arduino!"; for (int i = 0; i < strlen(message); i++) { Serial.print(message[i]); delay(200); } Serial.println(); delay(1000); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
void setup() { Serial.begin(9600); } void loop() { char message[] = "Hello, Arduino!"; int length = strlen(message); int index = length - 1; while (index >= 0) { Serial.print(message[index]); index--; delay(200); } Serial.println(); delay(1000); } |
בנה את התוכנה הבאה :
חזרה : לולאות , מחרוזות , לולאות .
נתחיל ממשהו כיפי…. חזרה על לולאת FOR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
{ "version": 1, "author": "Arvind Patil", "editor": "wokwi", "parts": [ { "type": "wokwi-arduino-uno", "id": "uno", "top": 146.33, "left": -51.88, "attrs": {} }, { "type": "wokwi-buzzer", "id": "bz1", "top": -19.75, "left": 74.81, "attrs": { "volume": "0.1" } }, { "type": "wokwi-led", "id": "led1", "top": -24.18, "left": 267.66, "attrs": { "color": "green" } } ], "connections": [ [ "bz1:2", "uno:9", "red", [ "v89.07", "h-7.33" ] ], [ "bz1:1", "uno:GND.1", "black", [ "v75.73", "h-51.33" ] ], [ "led1:A", "uno:9", "red", [ "v84.4", "h168" ] ], [ "led1:C", "uno:GND.3", "black ", [ "v187.06", "h208" ] ] ] } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
/* robotronix.co.il play tone with a loop */ const int speaker1 = 9; const int Led1 = 9; void setup() { pinMode(speaker1, OUTPUT); for(int i=0;i<5;i=i+1) // I=I+1 --> I++ { tone(speaker1, 1200); // Send 1200KHz sound signal, which is a G tone delay(300); tone(speaker1, 1400); // Send 1400KHz sound signal, which is a G tone delay(300); noTone(speaker1); // Stop sound delay(200); } } void loop() {} |
https://wokwi.com/projects/336059428787716692
()sprintf
1 2 3 4 5 6 7 8 9 10 11 |
int time1 = 0; char buff[50]; void setup() { Serial.begin(9600); } void loop() { sprintf(buff, "the value is %d seconds", time1++); Serial.println(buff); delay(1000); } |
()dtostrf
1 2 3 4 5 6 7 8 9 10 11 |
static float speed = 8123.6794; static char outstr[15]; void setup() { dtostrf(speed,5, 3, outstr); Serial.begin(9600); Serial.println(outstr); } void loop(){ } |
תרגול שפת C וחזרה מעבר מהיר
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <stdio.h> int main() { // Create variables int myNum = 5; // Integer (whole number) float myFloatNum = 5.99; // Floating point number char myLetter = 'D'; // Character // Print variables printf("%d\n", myNum); printf("%f\n", myFloatNum); printf("%c\n", myLetter); return 0; } |
https://www.onlinegdb.com/
תרגיל :
1.בשפת C לולאה for עולה ויודדת
2.בשפת C לולאת WHILE
סרבו :
תכנות רמזור מעבר חציה למכוניות – ושער משמרות זהב
1.שלב ראשון נבנה רמזור למכוניות ושער להוכלי רגל – תוכנית פשוטה
לתכונית יש מספר בגים ונשפר אותה בשלב השני .
התחלת התוכנית – מצב קמזור למכוניות ירוק – לילדים שער סגור
2.לחיצה על כפתור ירוק – פתיחה
3.לחיצה על כפץור ירק – סגירה
קישור לתוכנית : https://wokwi.com/projects/348859059935380052
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
// robotics blocks - Trafic light - Kids road Gase #include <ESP32Servo.h> const int servoPin = 18; int buttonOpenState; int buttonCloseState; #define ledRed 4 #define ledGreen 2 #define buttonOpen 12 #define buttonClose 14 int pos = 90; Servo servo; void setup() { // initialize serial for debugging Serial.begin(115200); Serial.println("start....system"); pinMode(buttonOpen, INPUT_PULLUP); pinMode(buttonClose, INPUT_PULLUP); pinMode(ledRed,OUTPUT); pinMode(ledGreen,OUTPUT); servo.attach(servoPin, 500, 2400); servo.write(90); digitalWrite(ledGreen,HIGH); Serial.println("Road Open- kids can not walk"); } void loop() { buttonOpenState = digitalRead(buttonOpen); buttonCloseState = digitalRead(buttonClose) ; if ( buttonOpenState==0) { // open gate digitalWrite(ledGreen, LOW); digitalWrite(ledRed, HIGH); for (pos =90; pos <= 180; pos = pos + 1) { servo.write(pos); // Serial.println(pos); digitalWrite(ledRed, HIGH); delay(15); } Serial.println("Road close- kids can walk"); } if(buttonCloseState==0) { // close gate for (pos =180; pos >= 90; pos =pos- 1) { servo.write(pos); // Serial.println(pos); delay(15); } digitalWrite(ledRed , LOW); digitalWrite(ledGreen,HIGH); Serial.println("Road Open- kids can not walk "); } } |
4. באלגוריתם התוכנה והמערכת קייים מספר בגים מה הם ?
רמז: (בדוק מה קורה אם לוחצים על הכפתור האדום בהתחלה במקום הירוק)
תוכנה לאחר תיקון הבאג
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
// robotics blocks - Trafic light - Kids road Gase #include <ESP32Servo.h> const int servoPin = 18; int buttonOpenState; int buttonCloseState; #define ledRed 4 #define ledGreen 2 #define buttonOpen 12 #define buttonClose 14 int pos = 90; Servo servo; char gateState=0; // 0= close , 1 = open void setup() { // initialize serial for debugging Serial.begin(115200); Serial.println("start....system"); pinMode(buttonOpen, INPUT_PULLUP); pinMode(buttonClose, INPUT_PULLUP); pinMode(ledRed,OUTPUT); pinMode(ledGreen,OUTPUT); servo.attach(servoPin, 500, 2400); servo.write(90); digitalWrite(ledGreen,HIGH); Serial.println("Road Open- kids can not walk"); } void loop() { buttonOpenState = digitalRead(buttonOpen); buttonCloseState = digitalRead(buttonClose) ; if ( (buttonOpenState==0) && (gateState==0)) { // open gate digitalWrite(ledGreen, LOW); digitalWrite(ledRed, HIGH); for (pos =90; pos <= 180; pos = pos + 1) { servo.write(pos); // Serial.println(pos); digitalWrite(ledRed, HIGH); delay(15); } gateState=1; Serial.println("Road close- kids can walk"); } if( (buttonCloseState==0) && (gateState==1) ) { // close gate if(pos>=180) // check if gate is already opemed { for (pos =180; pos >= 90; pos =pos- 1) { servo.write(pos); // Serial.println(pos); delay(15); } gateState=0; digitalWrite(ledRed , LOW); digitalWrite(ledGreen,HIGH); Serial.println("Road Open- kids can not walk "); } } } |
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
// robotics blocks - Trafic light - Kids road Gase #include <ESP32Servo.h> const int servoPin = 18; int buttonOpenState; int buttonCloseState; #define ledRed 4 #define ledGreen 2 #define buttonOpen 12 #define buttonClose 14 int pos = 90; Servo servo; char gateState=0; // 0= close , 1 = open void setup() { // initialize serial for debugging Serial.begin(115200); Serial.println("start....system"); pinMode(buttonOpen, INPUT_PULLUP); pinMode(buttonClose, INPUT_PULLUP); pinMode(ledRed,OUTPUT); pinMode(ledGreen,OUTPUT); servo.attach(servoPin, 500, 2400); servo.write(90); digitalWrite(ledGreen,HIGH); Serial.println("Road Open- kids can not walk"); } void loop() { buttonOpenState = digitalRead(buttonOpen); buttonCloseState = digitalRead(buttonClose) ; if ( (buttonOpenState==0) && (gateState==0)) { // open gate digitalWrite(ledGreen, LOW); digitalWrite(ledRed, HIGH); for (pos =90; pos <= 180; pos = pos + 1) { servo.write(pos); // Serial.println(pos); digitalWrite(ledRed, HIGH); delay(15); } gateState=1; Serial.println("Road close- kids can walk"); } if( (buttonCloseState==0) && (gateState==1) ) { // close gate if(pos>=180) // check if gate is already opemed { for (pos =180; pos >= 90; pos =pos- 1) { servo.write(pos); // Serial.println(pos); delay(15); } gateState=0; digitalWrite(ledRed , LOW); digitalWrite(ledGreen,HIGH); Serial.println("Road Open- kids can not walk "); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
{ "version": 1, "author": "Uri Shaked", "editor": "wokwi", "parts": [ { "type": "wokwi-esp32-devkit-v1", "id": "esp", "top": 0, "left": 0, "attrs": {} }, { "type": "wokwi-servo", "id": "servo1", "top": 71.13, "left": 194.42, "attrs": {} }, { "type": "wokwi-led", "id": "led1", "top": -12.88, "left": 140.68, "attrs": { "color": "red" } }, { "type": "wokwi-resistor", "id": "r1", "top": 53.82, "left": 140.75, "rotate": 90, "attrs": { "value": "1000" } }, { "type": "wokwi-pushbutton", "id": "btn1", "top": 79.58, "left": -132.1, "rotate": 90, "attrs": { "color": "green" } }, { "type": "wokwi-led", "id": "led2", "top": -10.26, "left": 211.24, "attrs": { "color": "limegreen" } }, { "type": "wokwi-resistor", "id": "r2", "top": 60.14, "left": 210.02, "rotate": 90, "attrs": { "value": "1000" } }, { "type": "wokwi-pushbutton", "id": "btn2", "top": 84.31, "left": -259.65, "rotate": 90, "attrs": { "color": "black" } } ], "connections": [ [ "esp:TX0", "$serialMonitor:RX", "", [] ], [ "esp:RX0", "$serialMonitor:TX", "", [] ], [ "esp:D18", "servo1:PWM", "green", [ "h37.5", "v14.46" ] ], [ "esp:VIN", "servo1:V+", "red", [ "h-25.81", "v68.77", "h167.38", "v-149.25" ] ], [ "servo1:GND", "esp:GND.1", "black", [ "h-12.27", "v71.38" ] ], [ "led1:C", "esp:GND.1", "black", [ "v0" ] ], [ "led1:A", "r1:1", "yellow", [ "v0" ] ], [ "esp:D4", "r1:2", "yellow", [ "h69.9", "v-4.32" ] ], [ "esp:GND.2", "btn1:2.r", "black", [ "h0" ] ], [ "btn1:1.l", "esp:D12", "green", [ "v-4.41", "h67.94", "v44.89" ] ], [ "esp:GND.1", "led2:C", "black", [ "h0" ] ], [ "r2:1", "led2:A", "green", [ "h0" ] ], [ "esp:D2", "r2:2", "yellow", [ "v-4.59", "h139.72" ] ], [ "esp:D14", "btn2:1.l", "green", [ "h-15.19", "v-72.25", "h-197.58" ] ], [ "btn2:2.r", "esp:GND.2", "green", [ "v34.2", "h184.74" ] ] ] } |
ADC
בניית זרוע רובוטית ב 100 שקל
analogReadResolution(10);
תרגיל כיתה
1 2 3 4 5 6 7 8 9 10 11 |
#define POT_PIN 2 void setup() { Serial.begin(115200); pinMode(POT_PIN, INPUT); } void loop() { Serial.println(analogRead(POT_PIN)); delay(10); } |
https://wokwi.com/projects/350073658887111251
ADC TO VOLTAGE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A0); // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V): float voltage = sensorValue * (5.0 / 1023.0); // print out the value you read: Serial.println(voltage); } |
https://wokwi.com/projects/366621256424803329
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include "ESP32Servo.h" Servo myservo; int potpin = 34; int val; void setup() { myservo.attach(19); } void loop() { val = analogRead(potpin); val = map(val, 0, 4095, 0, 180); myservo.write(val); delay(15); } |
https://wokwi.com/projects/350074002468766290
ROBOT DOG
דגם רובוט עם יותר הסברים (העשרה)
בניית אב טיפוס חיפוש ומציאת רכיבים
https://www.sparkfun.com/