Go Back (Eng - Arduino - Tut90.php) : ESC/servo Tester Code (29/03/2019)
Go Back (Eng - Arduino - Tut90.php) : ESC/servo Tester Code (29/03/2019)
(https://www.youtube.com
(https://www.instagram.com
(https://www.facebook.com
(https://twitter.com (http://bit.ly
/c/ELECTRONOOBS)
/ELECTRONOOBS)
/Electronoobs)
/ELECTRONOOBS) /36FgSDm)
Code
This is the code for the Arduino based servo turret. Make sure
you also install the needed library for i2c LCD screen module.
Download that from below. Install the library, compile and (http://bit.ly
uplaod the code to the Arduino. Downlaod the zip file or /2sZR6Lu)
copy+paste from below. Read all comments in the code!
(http://bit.ly
/2tHFUTI)
(images/Arduino/tut_90/sch_1.jpg)
GO BACK
(eng_arduino_tut90.php)
1 of 22 4/8/2020, 7:17 PM
//Tutorial: https://www.electronoobs.com/eng_arduino_tut90.php
//Schematic: https://www.electronoobs.com/eng_arduino_tut90_sch1.php
//LCD config
#include <Wire.h>
#include <LiquidCrystal_I2C.h> //http://www.electronoobs.com/eng_ardu
ino_liq_crystal.php
LiquidCrystal_I2C lcd(0x3f,20,4); //sometimes the LCD adress is not 0x3f.
Change to 0x27 if it dosn't work.
//inputs/outputs
int left = 2;
int right = 4;
int up = 5;
int down = 6;
int sel = 7;
int back = 8;
int pot = A0;
int pwm = 9;
///Variables
uint8_t retarrow[8] = {
B00000,
B00100,
B00010,
B11111,
B00010,
B00100,
B00000};
int menu_level = 0;
int menu_0_level = 0;
int menu_1_level = 0;
int menu_4_level = 0;
int menu_8_level = 0;
int menu_11_level = 0;
bool up_state = true;
bool down_state = true;
bool left_state = true;
bool right_state = true;
bool sel_state = true;
bool back_state = true;
int loop_counter = 0;
unsigned long previousMillis = 0;
int deg_val = 0;
int width = 1000;
int width_min = 1000;
int width_max = 2000;
int frequency = 50;
2 of 22 4/8/2020, 7:17 PM
void setup() {
pinMode(left,INPUT_PULLUP);
pinMode(right,INPUT_PULLUP);
pinMode(up,INPUT_PULLUP);
pinMode(down,INPUT_PULLUP);
pinMode(sel,INPUT_PULLUP);
pinMode(back,INPUT_PULLUP);
pinMode(pot,INPUT);
pinMode(pwm, OUTPUT);
lcd.clear();
lcd.setCursor(0,0);
lcd.write(1);
lcd.print(" Servo control");
lcd.setCursor(0,1);
lcd.print(" ESC control");
TCCR1A = 0;
TCCR1A = (1 <<COM1A1) | (1 << WGM11);
TCCR1B = 0;
TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS11);
ICR1 = 20000; //Freq= 50Hz
OCR1A = 0; //PWM->OFF pulse width = 0;
void loop() {
if(digitalRead(up))
{ up_state = true; }
if(digitalRead(down))
{ down_state = true; }
if(digitalRead(left))
{ left_state = true; }
if(digitalRead(right))
{ right_state = true; }
if(digitalRead(sel))
{ sel_state = true; }
if(digitalRead(back))
{ back_state = true; }
3 of 22 4/8/2020, 7:17 PM
if(menu_0_level == 0)
/3d-printers-
{
lcd.clear(); 3d-printer-
lcd.setCursor(0,0);
lcd.write(1);
kits/pp_009954647322.html?lkid=3952
lcd.print(" Servo control");
lcd.setCursor(0,1);
lcd.print(" ESC control");
}
if(menu_0_level == 1)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Servo control");
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" ESC control");
}
if(menu_0_level == 2)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ESC control");
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" ESC calibrate");
}
}
4 of 22 4/8/2020, 7:17 PM
}
///////////////////////////////MENU 0////////////////////////////////
//////////////////////////////////////////////////////////////////////////
///////
if(!digitalRead(back) && back_state == true)
{
back_state = false;
if(menu_level == 1 || menu_level == 8 || menu_level == 15) Creality3D
{
menu_level = 0; CR - 10S 3D
menu_0_level = 0; Printer - EU
lcd.clear();
lcd.setCursor(0,0); Plug
lcd.write(1); Upgrade
lcd.print(" Servo control");
lcd.setCursor(0,1); Version
lcd.print(" ESC control");
Coffee and
}
if(menu_level == 2 || menu_level == 3 || menu_level == 4) Black only
{
menu_level = 1;
$$352.94
menu_1_level = 0; (https://www.gearbest.com
lcd.clear();
lcd.setCursor(0,0);
/3d-printers-
lcd.write(1); 3d-printer-
lcd.print(" Servo pot");
lcd.setCursor(0,1);
kits/pp_796481.html?lkid=39527111
lcd.print(" Servo fine");
}
if(menu_level == 1)
{
menu_level = 0;
menu_0_level = 0;
lcd.clear();
lcd.setCursor(0,0);
lcd.write(1); Creality 3D
lcd.print(" Servo control");
Ender-3
lcd.setCursor(0,1);
lcd.print(" ESC control"); V-slot Prusa
}
if(menu_level == 5 || menu_level == 6 || menu_level == 7)
I3 DIY 3D
{ Printer Kit
menu_level = 4;
menu_4_level = 0;
220 x 220 x
lcd.clear(); 250mm
lcd.setCursor(0,0);
lcd.write(1);
Printing Size
lcd.print(" Min"); - EU Plug
lcd.setCursor(0,1);
lcd.print(" Max"); Black only
} $$153.84
if(menu_level == 9 || menu_level == 10 || menu_level == 11)
{ (https://www.gearbest.com
menu_level = 8;
5 of 22 4/8/2020, 7:17 PM
menu_8_level = 0;
/3d-printers-
lcd.clear();
lcd.setCursor(0,0); 3d-printer-
lcd.write(1);
lcd.print(" ESC pot");
kits/pp_1845899.html?lkid=39527206
lcd.setCursor(0,1);
lcd.print(" ESC fine");
}
if(menu_level == 12 || menu_level == 13 || menu_level ==
{
menu_level = 11;
menu_11_level = 0;
lcd.clear();
lcd.setCursor(0,0); Alfawise
lcd.write(1); U20 Large
lcd.print(" Min");
lcd.setCursor(0,1); Scale 2.8
lcd.print(" Max"); inch Touch
}
} Screen DIY
3D Printer -
//////////////////////////////////////////////////////////////////////////
/////// EU - U20
EU Plug
Black only
$$253.39
(https://www.gearbest.com
//////////////////////////////////////////////////////////////////////////
///////
/3d-printers-
if(menu_level == 0 && menu_0_level == 0 && !digitalRead(sel) 3d-printer-
&& sel_stat
e == true)
{ kits/pp_1841229.html?lkid=39527285
sel_state = false;
menu_level = 1;
ICR1 = servo_freq;
lcd.clear();
lcd.setCursor(0,0);
lcd.write(1);
lcd.print(" Servo pot");
lcd.setCursor(0,1);
lcd.print(" Servo fine");
}
if(menu_level == 0 && menu_0_level == 1 && !digitalRead(sel) && sel_stat
e == true)
{
sel_state = false;
menu_level = 8;
ICR1 = esc_freq;
lcd.clear();
lcd.setCursor(0,0);
lcd.write(1);
lcd.print(" ESC pot");
lcd.setCursor(0,1);
lcd.print(" ESC fine");
}
if(menu_level == 0 && menu_0_level == 2 && !digitalRead(sel) && sel_stat
e == true)
{
sel_state = false;
menu_level = 15;
lcd.clear();
lcd.setCursor(0,0);
6 of 22 4/8/2020, 7:17 PM
lcd.print("Set min value:");
lcd.setCursor(0,1);
lcd.print(calib_min);
}
//////////////////////////////////////////////////////////////////////////
///////
//////////////////////////////////////////////////////////////////////////
///////
if(menu_level == 1 && menu_1_level == 0 && !digitalRead(sel) && sel_stat
e == true)
{
sel_state = false;
previousMillis = millis();
menu_level = 2;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Deg ");
lcd.print(deg_val);
}
if(menu_level == 1 && menu_1_level == 1 && !digitalRead(sel) && sel_stat
e == true)
{
sel_state = false;
previousMillis = millis();
menu_level = 3;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Deg ");
lcd.print(deg_val);
}
if(menu_level == 1 && menu_1_level == 2 && !digitalRead(sel) && sel_stat
e == true)
{
sel_state = false;
menu_level = 4;
lcd.clear();
lcd.setCursor(0,0);
lcd.write(1);
lcd.print(" Min");
lcd.setCursor(0,1);
lcd.print(" Max");
}
//////////////////////////////////////////////////////////////////////////
///////
//////////////////////////////////////////////////////////////////////////
///////
if(menu_level == 4 && menu_4_level == 0 && !digitalRead(sel) && sel_stat
e == true)
{
sel_state = false;
menu_level = 5;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set min:");
lcd.setCursor(0,1);
7 of 22 4/8/2020, 7:17 PM
lcd.print(width_min);
}
if(menu_level == 4 && menu_4_level == 1 && !digitalRead(sel) && sel_stat
e == true)
{
sel_state = false;
menu_level = 6;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set max:");
lcd.setCursor(0,1);
lcd.print(width_max);
}
if(menu_level == 4 && menu_4_level == 2 && !digitalRead(sel) && sel_stat
e == true)
{
sel_state = false;
menu_level = 7;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set frequency:");
lcd.setCursor(0,1);
lcd.print(frequency);
}
//////////////////////////////////////////////////////////////////////////
///////
//////////////////////////////////////////////////////////////////////////
///////
if(menu_level == 8 && menu_8_level == 0 && !digitalRead(sel) && sel_stat
e == true)
{
sel_state = false;
previousMillis = millis();
menu_level = 9;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("us: ");
lcd.print(esc_width);
}
if(menu_level == 8 && menu_8_level == 1 && !digitalRead(sel) && sel_stat
e == true)
{
sel_state = false;
menu_level = 10;
previousMillis = millis();
esc_width = esc_width_min;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("us: ");
lcd.print(esc_width);
}
if(menu_level == 8 && menu_8_level == 2 && !digitalRead(sel) && sel_stat
e == true)
{
sel_state = false;
menu_level = 11;
lcd.clear();
lcd.setCursor(0,0);
lcd.write(1);
lcd.print(" Min");
8 of 22 4/8/2020, 7:17 PM
lcd.setCursor(0,1);
lcd.print(" Max");
}
//////////////////////////////////////////////////////////////////////////
///////
//////////////////////////////////////////////////////////////////////////
///////
if(menu_level == 11 && menu_11_level == 0 && !digitalRead(sel) && sel_st
ate == true)
{
sel_state = false;
menu_level = 12;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set min:");
lcd.setCursor(0,1);
lcd.print(width_min);
}
if(menu_level == 11 && menu_11_level == 1 && !digitalRead(sel) && sel_st
ate == true)
{
sel_state = false;
menu_level = 13;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set max:");
lcd.setCursor(0,1);
lcd.print(width_max);
}
if(menu_level == 11 && menu_11_level == 2 && !digitalRead(sel) && sel_st
ate == true)
{
sel_state = false;
menu_level = 14;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set frequency:");
lcd.setCursor(0,1);
lcd.print(frequency);
}
//////////////////////////////////////////////////////////////////////////
///////
///////////////////////////////MENU CHANGE
////////////////////////////////
9 of 22 4/8/2020, 7:17 PM
///////////////////////////////MENU 1////////////////////////////////
if(menu_level == 1 && !digitalRead(up) && up_state == true)
{
up_state = false;
menu_1_level = menu_1_level - 1;
if(menu_1_level < 0)
{
menu_1_level = 2;
}
if(menu_1_level == 0)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.write(1);
lcd.print(" Servo pot");
lcd.setCursor(0,1);
lcd.print(" Servo fine");
}
if(menu_1_level == 1)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Servo pot");
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" Servo fine");
}
if(menu_1_level == 2)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Servo fine");
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" Servo config");
}
}
10 of 22 4/8/2020, 7:17 PM
}
if(menu_1_level == 2)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Servo fine");
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" Servo config");
}
}
///////////////////////////////MENU 1////////////////////////////////
///////////////////////////////MENU 2////////////////////////////////
if(menu_level == 2)
{
width = map(analogRead(pot),0,1024,width_min,width_max);
deg_val = map(width,width_min,width_max,0,181);
OCR1A = width;
///////////////////////////////MENU 3////////////////////////////////
if(menu_level == 3)
{
if(!digitalRead(left) && left_state==true)
{
deg_val = deg_val - 1;
left_state = false;
}
if(!digitalRead(right) && right_state==true)
{
deg_val = deg_val + 1;
right_state = false;
}
if(deg_val > 180) deg_val = 180;
if(deg_val < 0) deg_val = 0;
11 of 22 4/8/2020, 7:17 PM
lcd.print("Deg: ");
lcd.print(deg_val);
}
}
///////////////////////////////MENU 3////////////////////////////////
///////////////////////////////MENU 4////////////////////////////////
if(menu_level == 4 && !digitalRead(up) && up_state == true)
{
OCR1A = 0; //PWM->OFF pulse width = 0;
up_state = false;
menu_4_level = menu_4_level - 1;
if(menu_4_level < 0)
{
menu_4_level = 2;
}
if(menu_4_level == 0)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.write(1);
lcd.print(" Min");
lcd.setCursor(0,1);
lcd.print(" Max");
}
if(menu_4_level == 1)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Min");
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" Max");
}
if(menu_4_level == 2)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Max");
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" Frequency");
}
}
12 of 22 4/8/2020, 7:17 PM
lcd.setCursor(0,1);
lcd.print(" Max");
}
if(menu_4_level == 1)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Min");
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" Max");
}
if(menu_4_level == 2)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Max");
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" Frequency");
}
}
///////////////////////////////MENU 4////////////////////////////////
///////////////////////////////MENU 5////////////////////////////////
if(menu_level == 5 && !digitalRead(left) && left_state == true)
{
left_state = false;
width_min = width_min - 5;
if(width_min < 100)
{
width_min = 100;
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set min:");
lcd.setCursor(0,1);
lcd.print(width_min);
}
if(menu_level == 5 && !digitalRead(right) && right_state == true)
{
right_state = false;
width_min = width_min + 5;
if(width_min > width_max)
{
width_min = width_max;
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set min:");
lcd.setCursor(0,1);
lcd.print(width_min);
}
///////////////////////////////MENU 5////////////////////////////////
///////////////////////////////MENU 6////////////////////////////////
if(menu_level == 6 && !digitalRead(left) && left_state == true)
{
left_state = false;
13 of 22 4/8/2020, 7:17 PM
width_max= width_max - 5;
if(width_max < width_min)
{
width_max = width_min;
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set max:");
lcd.setCursor(0,1);
lcd.print(width_max);
}
if(menu_level == 6 && !digitalRead(right) && right_state == true)
{
right_state = false;
width_max = width_max + 5;
if(width_max > 4000)
{
width_max = 40000;
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set max:");
lcd.setCursor(0,1);
lcd.print(width_max);
}
///////////////////////////////MENU 5////////////////////////////////
///////////////////////////////MENU 7////////////////////////////////
if(menu_level == 7 && !digitalRead(left) && left_state == true)
{
left_state = false;
frequency= frequency - 1;
if(frequency < 10)
{
frequency = 10;
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set frequency:");
lcd.setCursor(0,1);
lcd.print(frequency);
servo_freq = 16000000/(frequency*16);
}
if(menu_level == 7 && !digitalRead(right) && right_state == true)
{
right_state = false;
frequency = frequency + 1;
if(frequency > 100)
{
frequency = 100;
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set frequency:");;
lcd.setCursor(0,1);
lcd.print(frequency);
servo_freq = 16000000/(frequency*16);
}
///////////////////////////////MENU 7////////////////////////////////
14 of 22 4/8/2020, 7:17 PM
///////////////////////////////MENU 8////////////////////////////////
if(menu_level == 8 && !digitalRead(up) && up_state == true)
{
up_state = false;
menu_8_level = menu_8_level - 1;
if(menu_8_level < 0)
{
menu_8_level = 2;
}
if(menu_8_level == 0)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.write(1);
lcd.print(" ESC pot");
lcd.setCursor(0,1);
lcd.print(" ESC fine");
}
if(menu_8_level == 1)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ESC pot");
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" ESC fine");
}
if(menu_8_level == 2)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ESC fine");
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" ESC config");
}
}
15 of 22 4/8/2020, 7:17 PM
if(menu_8_level == 2)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ESC fine");
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" ESC config");
}
}
///////////////////////////////MENU 8////////////////////////////////
///////////////////////////////MENU 9////////////////////////////////
if(menu_level == 9)
{
esc_width = map(analogRead(pot),0,1024,esc_width_min,esc_width_max);
OCR1A = esc_width;
///////////////////////////////MENU 10////////////////////////////////
if(menu_level == 10)
{
if(!digitalRead(left))
{
esc_width = esc_width - 1;
left_state = false;
delay(10);
}
if(!digitalRead(right))
{
esc_width = esc_width + 1;
right_state = false;
delay(10);
}
if(esc_width > esc_width_max) esc_width = esc_width_max;
if(esc_width < esc_width_min) esc_width = esc_width_min;
OCR1A = esc_width;
16 of 22 4/8/2020, 7:17 PM
}
///////////////////////////////MENU 10////////////////////////////////
///////////////////////////////MENU 11////////////////////////////////
if(menu_level == 11 && !digitalRead(up) && up_state == true)
{
up_state = false;
menu_11_level = menu_11_level - 1;
if(menu_11_level < 0)
{
menu_11_level = 2;
}
if(menu_11_level == 0)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.write(1);
lcd.print(" Min");
lcd.setCursor(0,1);
lcd.print(" Max");
}
if(menu_11_level == 1)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Min");
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" Max");
}
if(menu_11_level == 2)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Max");
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" Frequency");
}
}
17 of 22 4/8/2020, 7:17 PM
lcd.setCursor(0,0);
lcd.print(" Min");
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" Max");
}
if(menu_11_level == 2)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Max");
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" Frequency");
}
}
///////////////////////////////MENU 11////////////////////////////////
///////////////////////////////MENU 12////////////////////////////////
if(menu_level == 12 && !digitalRead(left) && left_state == true)
{
left_state = false;
esc_width_min = esc_width_min - 5;
if(esc_width_min < 100)
{
esc_width_min = 100;
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set min:");
lcd.setCursor(0,1);
lcd.print(esc_width_min);
}
if(menu_level == 12 && !digitalRead(right) && right_state == true)
{
right_state = false;
esc_width_min = esc_width_min + 5;
if(esc_width_min > esc_width_max)
{
esc_width_min = esc_width_max;
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set min:");
lcd.setCursor(0,1);
lcd.print(esc_width_min);
}
///////////////////////////////MENU 12////////////////////////////////
///////////////////////////////MENU 13////////////////////////////////
if(menu_level == 13 && !digitalRead(left) && left_state == true)
{
left_state = false;
esc_width_max= esc_width_max - 5;
if(esc_width_max < esc_width_min)
{
esc_width_max = esc_width_min;
}
18 of 22 4/8/2020, 7:17 PM
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set max:");
lcd.setCursor(0,1);
lcd.print(esc_width_max);
}
if(menu_level == 13 && !digitalRead(right) && right_state == true)
{
right_state = false;
esc_width_max = esc_width_max + 5;
if(esc_width_max > 4000)
{
esc_width_max = 40000;
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set max:");
lcd.setCursor(0,1);
lcd.print(esc_width_max);
}
///////////////////////////////MENU 13////////////////////////////////
///////////////////////////////MENU 14////////////////////////////////
if(menu_level == 14 && !digitalRead(left) && left_state == true)
{
left_state = false;
frequency= frequency - 1;
if(frequency < 10)
{
frequency = 10;
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set frequency:");
lcd.setCursor(0,1);
lcd.print(frequency);
esc_freq = 16000000/(frequency*16);
}
if(menu_level == 14 && !digitalRead(right) && right_state == true)
{
right_state = false;
frequency = frequency + 1;
if(frequency > 100)
{
frequency = 100;
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set frequency:");;
lcd.setCursor(0,1);
lcd.print(frequency);
esc_freq = 16000000/(frequency*16);
}
///////////////////////////////MENU 14////////////////////////////////
///////////////////////////////MENU 15////////////////////////////////
if(menu_level == 15 && !digitalRead(left) && left_state == true)
{
left_state = false;
calib_min= calib_min - 5;
if(calib_min < 100)
19 of 22 4/8/2020, 7:17 PM
{
calib_min = 100;
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set min value:");
lcd.setCursor(0,1);
lcd.print(calib_min);
}
20 of 22 4/8/2020, 7:17 PM
if(menu_level == 16 && !digitalRead(sel) && sel_state == true)
{
sel_state = false;
menu_level = 17;
OCR1A = calib_max;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Connect battery");
lcd.setCursor(0,1);
lcd.print("And press select");
}
if(menu_level == 17 && !digitalRead(sel) && sel_state == true)
{
sel_state = false;
OCR1A = calib_min;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Calibrating");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ESC configured");
lcd.setCursor(0,1);
lcd.print("after beep");
delay(2000);
menu_level = 0;
menu_0_level = 0;
lcd.setCursor(0,0);
lcd.write(1);
lcd.print(" Servo control");
lcd.setCursor(0,1);
lcd.print(" ESC control");
}
///////////////////////////////MENU 15,16,17
////////////////////////////////
}//end void loop
21 of 22 4/8/2020, 7:17 PM
3 Comments Sort by Newest
Marco Antonio
puedes hacer tambien el codigo sin i2c por que no tengo por
fabor quiero hacer el proyecto
Like · Reply · 1 · 19w
Preston Hackett
I like your project, i've been trying to make the same type of
GO BACK
(eng_arduino_tut90.php)
ELECTRONOOBS 2020
Keep up you guys!
22 of 22 4/8/2020, 7:17 PM