קורס אמבדד – RB19-02 מבוא למיקרובקרים – תכנות ואלקטרוניקה – מחרוזות בסביבת ארדואינו
רכיב פוטנציומטר (מחזיר ערך מסוג int)
https://wokwi.com/projects/367248141908160513
שלבים ראשונים לבניית ראדאר :
https://wokwi.com/projects/366621256424803329
הערה : יש להוסיף ספריה דרבייר תוכנתי שתתאם בין החומרה של מנוע הסרבו לתוכנה
לוחמים על הלשונית ניהול סיפריות ומקלדים את שם הספריה
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
int potpin = 34; int val; void setup() { Serial.begin(115200); Serial.print("start potentiometer example "); } void loop() { val = analogRead(potpin); Serial.print("val : "); Serial.println(val ); delay(1500); |
https://wokwi.com/projects/366621256424803329
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#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); |
איך מנוע סרבו עובד ?
מנוע סרבו הינו שילוב של מנוע חשמלי , גיר מכאני מכפיל כוח (גלגל שיניים קטן מסובב את ה SHAFT של גלגל שיניים גדול ) ו פוטנציומטר.
אלה עובדים יחדיו – כאשר נילמד על PWM נחזור ללמוד על סרבו שוב
איך סרבו בנוי ?
טיפוסים Data Type :
דומאות משתנים בסביבת ארדואינו
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
void setup() { // Initialize serial communication at 9600 bits per second Serial.begin(9600); // Define weight and height float weight = 70.0; // weight in kilograms float height = 1.75; // height in meters // Calculate BMI float bmi = weight / (height * height); // Print the result Serial.print("BMI is: "); Serial.println(bmi); // Wait for a second delay(1000); } void loop() { } |
משפט תנאי if , משפט תנאי if else
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
int ledPin = 2; // the number of the LED pin int i = 0; // our variable that we'll use in the if else statement void setup() { // initialize the LED pin as an output: pinMode(ledPin, OUTPUT); } void loop() { // check the value of i if (i == 0) { // if i is equal to 0, turn the LED off digitalWrite(ledPin, LOW); Serial.println("i is 0, LED is off."); delay(1000); // wait for a second i = 1; // then change i to 1 } else { // if i is equal to 1, turn the LED on digitalWrite(ledPin, HIGH); Serial.println("i is 1, LED is on."); delay(1000); // wait for a second i = 0; // then change i back to 0 } } |
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 |
int ledPin = 2; // the number of the LED pin float w = 0; // our variable that we'll use in the if else statement void setup() { // initialize the LED pin as an output: Serial.begin(115200); w=87; if (w==80) { // if i is equal to 0, turn the LED off Serial.println(" w is 80 "); } if (w > 80) { // if i is equal to 0, turn the LED off Serial.println(" w bigger then 80 "); } if (w < 80) { // if i is equal to 0, turn the LED off Serial.println(" w lower then 80 "); } |
חישוב BMI
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 |
void setup() { // Initialize serial communication at 9600 bits per second Serial.begin(9600); } void loop() { // Define weight and height float weight = 70.0; // weight in kilograms float height = 1.75; // height in meters // Calculate BMI float bmi = weight / (height * height); // Check the BMI and print the result Serial.print("BMI is: "); Serial.println(bmi); if (bmi < 18.5) { Serial.println("Underweight"); } else if (bmi < 24.9) { Serial.println("Normal weight"); } else if (bmi < 29.9) { Serial.println("Overweight"); } else { Serial.println("Obesity"); } // Wait for a second 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 |
void setup() { // Initialize serial communication at 9600 bits per second Serial.begin(9600); } void loop() { // Define the conversion rate float conversionRate = 3.5; // 1 USD = 3.5 ILS // Amount in ILS float ilsAmount = 1.0; // Perform the conversion float usdAmount = ilsAmount / conversionRate; // Print the result Serial.print(ilsAmount); Serial.print(" ILS = "); Serial.print(usdAmount); Serial.println(" USD"); // Wait for a second 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 |
void setup() { // Initialize serial communication at 9600 bits per second Serial.begin(9600); int a = 45; // Add 23 to a a = a + 23; // Print the value of a Serial.print("a = "); Serial.println(a); // Subtract 10 from a a = a - 10; // Print the value of a Serial.print("a = "); Serial.println(a); // Divide a by 3 a = a / 3; // Print the value of a Serial.print("a = "); Serial.println(a); // Multiply a by 10 a = a * 10; // Print the value of a Serial.print("a = "); Serial.println(a); // Wait for a second delay(1000); } void loop() { // Define the initial value of a } |
חישוב חזקה
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
void setup() { // Initialize serial communication at 9600 bits per second Serial.begin(9600); } void loop() { // Define mass and velocity float mass = 10.0; // mass in kilograms float velocity = 20.0; // velocity in m/s, replace this with the actual velocity // Calculate kinetic energy float kineticEnergy = 0.5 * mass * pow(velocity, 2); // Print the result Serial.print("Kinetic energy is: "); Serial.println(kineticEnergy); // Wait for a second delay(1000); } |
בדיקה אם מספר מתחלק ב 2 ( האם מספק זוגי ) יהיה מאוד שימושי בלולאות
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
void setup() { // Initialize serial communication at 9600 bits per second Serial.begin(9600); } void loop() { // Declare and initialize an int variable int i = 4; // Check if i is divisible by 2 without remainder if (i % 2 == 0) { Serial.println("The number is divisible by 2 without remainder."); } else { Serial.println("The number is not divisible by 2 without remainder."); } // Wait for a second delay(1000); } In this code, i is an integer variable that is initialized with the value 4. The if-else statement checks whether i is divisible by 2 without a remainder. If it is, "The number is divisible by 2 without remainder." is printed to the Serial Monitor. If it is not, "The number is not divisible by 2 without remainder." is printed instead. Remember to replace the value of i with the actual number you want to check. The program will check the divisibility every second and print the result. |
אלקטרוניקה חישוב נגדים במקביל – מתח במקביל
מחלק זרם
הזרם במקביל :
תרגיל נוסף (התנגדות הכללית גדלה – לכן זרם קטן )
תרגיל נוסף (התנגדות הכללית גדלה – לכן זרם קטן )
1. תרגיל כיתה : משתנים
1.1 בנה תוכנית שממירה משתנה Product Price מ 100 שקל , ליורו וכותבת את הפלט ( float )
1.2 התוכנית מחשבת הנחה 24% ממחיר Product Price
1.3 התכונית מחשבת אם המספר מתחלק ב 2 אם כן מדפיסה המחיר מתחלק 2 ללא שארית
2 . תרגיל כיתה ( חובה ) : תיקון ERRORS תוכנה שפת C סביבת ארדואינו
תקן את השגיאות בתוכנה – כך שהתוכנה תתקמפל ותעבוד (מומלץ לעשות בזוגות )
2.1 https://wokwi.com/projects/367251213521948673
2.2 https://wokwi.com/projects/367251496023018497
2.3 https://wokwi.com/projects/367251620937786369
2.4 https://wokwi.com/projects/367251620937786369
מבוא ללאות , ללאות while
אנחנו נשתמש בלדים הבאים ללמוד ולתרגל ללאות
https://wokwi.com/projects/367253367882248193
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 |
void setup() { // Set the GPIO pins as outputs pinMode(15, OUTPUT); pinMode(2, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); // Turn on LED at GPIO15 digitalWrite(15, HIGH); delay(500); digitalWrite(15, LOW); // Turn on LED at GPIO2 digitalWrite(2, HIGH); delay(500); digitalWrite(2, LOW); // Turn on LED at GPIO4 digitalWrite(4, HIGH); delay(500); digitalWrite(4, LOW); // Turn on LED at GPIO5 digitalWrite(5, HIGH); delay(500); digitalWrite(5, LOW); } void loop() { } |
שימוש בלולאה for (מבוא למערכים)
לולאה עולה for
https://wokwi.com/projects/367258206211324929
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
void setup() { // array of GPIO pins int ledPins[] = {15, 2, 4, 5}; int numLeds = 4; // Initialize each GPIO pin as an output and turn on the LED for (int i = 0; i < numLeds; i++) { pinMode(ledPins[i], OUTPUT); digitalWrite(ledPins[i], HIGH); delay(500); } } void loop() { // No code needed in the loop for this example } |
לולאה עולה ויורדת for
https://wokwi.com/projects/367258716936020993
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 |
void setup() { // array of GPIO pins int ledPins[] = {15, 2, 4, 5}; int numLeds = 4; int i = 0; for (i=0; i < numLeds; i++) { pinMode(ledPins[i], OUTPUT); } // Initialize each GPIO pin as an output and turn on the LED for (i = 0; i < numLeds; i++) { digitalWrite(ledPins[i], HIGH); delay(500); } // Initialize each GPIO pin as an output and turn on the LED for (i = 3; i >= 0; i--) { digitalWrite(ledPins[i], LOW); delay(500); } } void loop() { // No code needed in the loop for this example } |
https://wokwi.com/projects/367266327027947521
בניית ראדר – שלבים ראשונים לבניית מנוע של ראדאר : שימוש בלולאות
https://wokwi.com/projects/367267691172942849
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 |
#include "ESP32Servo.h" Servo myservo; int potpin = 34; int speed; int j; int val; void setup() { myservo.attach(19); Serial.begin(115200); } void loop() { for(j=0;j<=180;j=j+2) { speed = analogRead(potpin); // 0 -- 4095 speed= (speed /50); val = map(j, 0, 180, 0, 180); // var , min var to max var , from angle , to angle myservo.write(val); delay(3+1*speed); Serial.println(val); } Serial.println("------ 180 ------"); for(j=180;j>=0;j=j-2) { speed = analogRead(potpin); // 0 -- 4095 speed= (speed /50); val = map(j, 0, 180, 0, 180); // var , min var to max var , from angle , to angle myservo.write(val); delay(3+1*speed); Serial.println(val); } } |
מבוא למחרוזות ומערכים
מערך הינו משתנה עם הרבה מאוד תאים , ניתן לפנות לכל מתשנה דרך אינדקס.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
void setup() { // Initialize serial communication at 9600 bits per second Serial.begin(9600); } void loop() { // Declare and initialize a char variable char myCharacter = 'A'; // Print the char variable Serial.print("The character is: "); Serial.println(myCharacter); // Wait for a second 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 |
void setup() { // Initialize serial communication at 9600 bits per second Serial.begin(9600); char msg[80]; strcpy(msg, "http://robotronix.co.il"); // copy the URL into the msg array Serial.println(msg); // print the URL // Print the length of msg Serial.print("Length of msg: "); Serial.println(strlen(msg)); // Check the URL and print the appropriate message if (strstr(msg, ".co.il") != NULL) { Serial.println("Israeli site"); } else if (strstr(msg, ".com") != NULL) { Serial.println("Commercial site"); } else if (strstr(msg, ".it") != NULL) { Serial.println("Italian site"); } // Check if the site uses HTTPS or HTTP if (strstr(msg, "https://") != NULL) { Serial.println("Site is secure"); } else if (strstr(msg, "http://") != NULL) { Serial.println("Site is not secure"); } } void loop() { // No need for code in the loop for this example } |
קריאת ערכים מכניסה סיריאלית
https://wokwi.com/projects/367273385352846337
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 |
char msg[80]; // array to store incoming characters int idx = 0; // index into array void setup() { // Initialize serial communication at 9600 bits per second Serial.begin(9600); } void loop() { // Check if data is available to read if (Serial.available() > 0) { char receivedChar = Serial.read(); // If received character is a newline, print the message and reset the index if (receivedChar == '\n') { msg[idx] = '\0'; // Null-terminate the C-string Serial.print("Received message: "); Serial.println(msg); idx = 0; // Reset index to start storing at the beginning of msg } else if (idx < sizeof(msg) - 1) { // Ensure we don't go past the end of the array // Add the received character to the msg array msg[idx] = receivedChar; idx++; } } } |
תרגיל כיתה 3 :
1. הוסף לתוכנית הבאה משקה moka ללד כחול : https://wokwi.com/projects/367273385352846337
2. תקן את התוכנית הבא רמז שורה 9 : https://wokwi.com/projects/367252012078679041
3. תקן את השגיאות בקוד התכונה : https://wokwi.com/projects/367273813452882945
תרגיל כיתה 3
מבוא לפונקציות
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 |
void setup() { // Initialize serial communication at 9600 bits per second Serial.begin(9600); } void loop() { // Define weight and height float weight = 70.0; // weight in kilograms float height = 1.75; // height in meters // Calculate BMI and print result calculateAndPrintBMI(weight, height); // Wait for a second delay(1000); } void calculateAndPrintBMI(float weight, float height) { // Calculate BMI float bmi = weight / (height * height); // Print the result Serial.print("BMI is: "); Serial.println(bmi); // Print BMI classification if (bmi < 18.5) { Serial.println("Underweight"); } else if (bmi < 24.9) { Serial.println("Normal weight"); } else if (bmi < 29.9) { Serial.println("Overweight"); } else { Serial.println("Obesity"); } } |