ברוכים הבאים לשיעור!
השיעור מורכב מסדרה של סרטונים, צפו בהם לפי הסדר.
תהנו 🙂
העתיקו את הקוד מקופסה זו:
#define MOTOR_PIN_AI1 5
#define MOTOR_PIN_AI2 2
#define MOTOR_PIN_SPEED 4
#define SPEED_CHANNEL 5
#define PWM_FREQ 20000
#define SPEED_RESOLUTION 8
void setup() {
pinMode(MOTOR_PIN_AI1, OUTPUT);
pinMode(MOTOR_PIN_AI2, OUTPUT);
ledcSetup(SPEED_CHANNEL, PWM_FREQ, SPEED_RESOLUTION);
ledcAttachPin(MOTOR_PIN_SPEED, SPEED_CHANNEL);
}
void loop() {
//Stop motor
digitalWrite(MOTOR_PIN_AI1, LOW);
digitalWrite(MOTOR_PIN_AI2, LOW);
delay(2000);
//***** Forward *******
digitalWrite(MOTOR_PIN_AI1, LOW);
digitalWrite(MOTOR_PIN_AI2, HIGH);
//set speed
ledcWrite(SPEED_CHANNEL, 50);
delay(2000);
//***** Backward *******
digitalWrite(MOTOR_PIN_AI1, HIGH);
digitalWrite(MOTOR_PIN_AI2, LOW);
//set speed
ledcWrite(SPEED_CHANNEL, 50);
delay(2000);
}
העתיקו את הקוד מקופסה זו:
//ESP32Servo
#include <ESP32Servo.h>
Servo myservo;
#define SERVO_PIN 32
#define MOTOR_PIN_AI1 5
#define MOTOR_PIN_AI2 2
#define MOTOR_PIN_SPEED 4
#define SPEED_CHANNEL 5
#define PWM_FREQ 20000
#define SPEED_RESOLUTION 8
void setup() {
pinMode(MOTOR_PIN_AI1, OUTPUT);
pinMode(MOTOR_PIN_AI2, OUTPUT);
ledcSetup(SPEED_CHANNEL, PWM_FREQ, SPEED_RESOLUTION);
ledcAttachPin(MOTOR_PIN_SPEED, SPEED_CHANNEL);
//Servo
myservo.setPeriodHertz(50);
myservo.attach(SERVO_PIN, 500, 2400);
myservo.write(90);
}
void loop() {
//Stop motor
digitalWrite(MOTOR_PIN_AI1, LOW);
digitalWrite(MOTOR_PIN_AI2, LOW);
delay(2000);
//***** Forward *******
digitalWrite(MOTOR_PIN_AI1, LOW);
digitalWrite(MOTOR_PIN_AI2, HIGH);
//set speed
ledcWrite(SPEED_CHANNEL, 50);
delay(2000);
//***** Backward *******
digitalWrite(MOTOR_PIN_AI1, HIGH);
digitalWrite(MOTOR_PIN_AI2, LOW);
//set speed
ledcWrite(SPEED_CHANNEL, 50);
delay(2000);
}
פתרון משימת הבונוס:
//FastLED
#include <FastLED.h>
#define NUM_LEDS 16
#define DATA_PIN 33
CRGB leds[NUM_LEDS];
#define MOTOR_PIN_AI1 5
#define MOTOR_PIN_AI2 2
#define MOTOR_PIN_SPEED 4
#define SPEED_CHANNEL 5
#define PWM_FREQ 20000
#define SPEED_RESOLUTION 8
void setup() {
//FastLED setup
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
FastLED.setBrightness(50);
pinMode(MOTOR_PIN_AI1, OUTPUT);
pinMode(MOTOR_PIN_AI2, OUTPUT);
ledcSetup(SPEED_CHANNEL, PWM_FREQ, SPEED_RESOLUTION);
ledcAttachPin(MOTOR_PIN_SPEED, SPEED_CHANNEL);
}
void loop() {
//Stop motor
digitalWrite(MOTOR_PIN_AI1, LOW);
digitalWrite(MOTOR_PIN_AI2, LOW);
for (int i=0 ; i<16 ; i++ )
leds[i] = CRGB::Red;
FastLED.show();
delay(2000);
//***** Forward *******
digitalWrite(MOTOR_PIN_AI1, LOW);
digitalWrite(MOTOR_PIN_AI2, HIGH);
//set speed
ledcWrite(SPEED_CHANNEL, 50);
for (int i=0 ; i<16 ; i++ )
leds[i] = CRGB::Green;
FastLED.show();
delay(2000);
//***** Backward *******
digitalWrite(MOTOR_PIN_AI1, HIGH);
digitalWrite(MOTOR_PIN_AI2, LOW);
//set speed
ledcWrite(SPEED_CHANNEL, 50);
for (int i=0 ; i<16 ; i++ )
leds[i] = CRGB::Blue;
FastLED.show();
delay(2000);
}