Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Stepper.h>
- #include <Servo.h>
- #include <LiquidCrystal_I2C.h>
- #include <Wire.h>
- int rpm = 2048;
- LiquidCrystal_I2C lcd(0x27, 16, 2);
- Stepper motor(rpm, 10, 12, 11, 13);
- int pinLedR = 3;
- int pinLedA = 2;
- int pinSound = 4;
- int lecturaBoton = A0;
- int pinServo = 5;
- int pinPotenciometro = A1;
- int ejeX = A2;
- int ejeY = A3;
- Servo miServo;
- // Variables de uso
- int velocidadMotor = 1;
- int estadoBoton;
- int angulo;
- int vrJoystick;
- int tempEjeY;
- int wait = 50;
- int voltajePotenciometro;
- bool verificarSonido;
- int stepState = 1;
- void setup() {
- pinMode(pinLedA, OUTPUT);
- pinMode(pinLedR, OUTPUT);
- pinMode(pinSound, OUTPUT);
- pinMode(pinPotenciometro, INPUT);
- pinMode(ejeX, INPUT);
- pinMode(ejeY, INPUT);
- Serial.begin(9600);
- lcd.init();
- lcd.backlight();
- miServo.attach(pinServo);
- motor.setSpeed(1);
- lcd.setCursor(0, 1);
- lcd.print("Giro motor: <-");
- }
- void moverMotor(int step) {
- tempEjeY = analogRead(ejeY);
- while (tempEjeY < 529 || tempEjeY > 532) {
- motor.step(step);
- tempEjeY = analogRead(ejeY);
- //velocidadMotor = (((2. / 1023.) * tempEjeY) - 3.) * -1;
- motor.setSpeed(abs(15));
- }
- digitalWrite(10, LOW);
- digitalWrite(11, LOW);
- digitalWrite(12, LOW);
- digitalWrite(13, LOW);
- }
- bool moverServo() {
- vrJoystick = analogRead(ejeX);
- angulo = (179. / 1022.) * (vrJoystick - 1022.) * -1;
- miServo.write(angulo);
- if (angulo == 0 || angulo >= 178) {
- return true;
- } else {
- return false;
- }
- }
- void sonar(bool verificador) {
- if (verificador) {
- if (angulo >= 179) {
- digitalWrite(pinLedA, 0);
- digitalWrite(pinSound, 1);
- digitalWrite(pinLedR, 1);
- delay(wait);
- digitalWrite(pinSound, 0);
- digitalWrite(pinLedR, 0);
- delay(wait);
- lcd.setCursor(0, 0);
- lcd.print("Valor minimo");
- } else if (angulo == 0) {
- digitalWrite(pinLedR, 0);
- digitalWrite(pinSound, 1);
- digitalWrite(pinLedA, 1);
- delay(wait);
- digitalWrite(pinSound, 0);
- digitalWrite(pinLedA, 0);
- delay(wait);
- lcd.setCursor(0, 0);
- lcd.print("Valor maximo");
- }
- } else {
- digitalWrite(pinSound, 0);
- digitalWrite(pinLedR, 0);
- digitalWrite(pinLedA, 0);
- }
- }
- void cambiarDireccionMotor(int pinLectura) {
- if (pinLectura == 0) {
- if (stepState == 1) {
- lcd.setCursor(0, 1);
- lcd.print("Giro motor: ->");
- digitalWrite(pinSound, 1);
- delay(150);
- digitalWrite(pinSound, 0);
- delay(150);
- stepState = -1;
- lcd.setCursor(0, 1);
- } else {
- lcd.setCursor(0, 1);
- lcd.print("Giro motor: <-");
- stepState = 1;
- digitalWrite(pinSound, 1);
- delay(150);
- digitalWrite(pinSound, 0);
- delay(150);
- }
- }
- }
- void loop() {
- Serial.println(angulo);
- lcd.setCursor(0, 0);
- lcd.print("Angulo mtr: " + String(angulo) + " ");
- cambiarDireccionMotor(analogRead(lecturaBoton));
- moverMotor(stepState);
- verificarSonido = moverServo();
- sonar(verificarSonido);
- voltajePotenciometro = analogRead(pinPotenciometro);
- wait = (450. / 700.) * voltajePotenciometro + 50.;
- }
Advertisement
Add Comment
Please, Sign In to add comment