Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h>
- #include <boarddefs.h>
- #include <IRremote.h>
- #include <IRremoteInt.h>
- #include <ir_Lego_PF_BitStreamEncoder.h>
- #define first_key 48703
- #define second_key 58359
- int receiver_pin = 12;
- int first_led_pin = 10;
- int second_led_pin = 11;
- int led[] = {0,0,0,0};
- IRrecv receiver(receiver_pin);
- decode_results output;
- const int controlPin1 = 2; // connected to pin 7 on the H-bridge
- const int controlPin2 = 3; // connected to pin 2 on the H-bridge
- const int enablePin = 9; // connected to pin 1 on the H-bridge
- const int directionSwitchPin = 4; // connected to the switch for direction
- const int onOffSwitchStateSwitchPin = 5; // connected to the switch for turning the motor on and off
- const int potPin = A0; // connected to the potentiometer's output
- // create some variables to hold values from your inputs
- int onOffSwitchState = 0; // current state of the On/Off switch
- int previousOnOffSwitchState = 0; // previous position of the on/off switch
- int directionSwitchState = 0; // current state of the direction switch
- int previousDirectionSwitchState = 0; // previous state of the direction switch
- int motorEnabled = 0; // Turns the motor on/off
- int motorSpeed = 0; // speed of the motor
- int motorDirection = 1; // current direction of the motor
- LiquidCrystal lcd (A4, A5)
- void setup(){
- Serial.begin(9600);
- receiver.enableIRIn();
- pinMode(first_led_pin, OUTPUT);
- pinMode(second_led_pin, OUTPUT);
- // intialize the inputs and outputs
- pinMode(directionSwitchPin, INPUT);
- pinMode(onOffSwitchStateSwitchPin, INPUT);
- pinMode(controlPin1, OUTPUT);
- pinMode(controlPin2, OUTPUT);
- pinMode(enablePin, OUTPUT);
- // pull the enable pin LOW to start
- digitalWrite(enablePin, LOW);
- //lcd
- lcd.begin (16,2);
- lcd.setCursor (5,0); //first row 5th column
- lcd.print ("my name:");
- lcd.setCursor (5,1); //second row 5th column
- lcd.print ("alondra");
- }
- void loop(){
- if (receiver.decode(&output)) {
- unsigned int value = output.value;
- switch(value) {
- case first_key:
- if(led[1] == 1) {
- digitalWrite(first_led_pin, LOW);
- led[1] = 0;
- } else {
- digitalWrite(first_led_pin, HIGH);
- led[1] = 1;
- }
- break;
- case second_key:
- if(led[2] == 1) {
- digitalWrite(second_led_pin, LOW);
- led[2] = 0;
- } else {
- digitalWrite(second_led_pin, HIGH);
- led[2] = 1;
- }
- }
- Serial.println(value);
- receiver.resume();
- }
- // read the value of the on/off switch
- onOffSwitchState = digitalRead(onOffSwitchStateSwitchPin);
- delay(1);
- // read the value of the direction switch
- directionSwitchState = digitalRead(directionSwitchPin);
- // read the value of the pot and divide by 4 to get
- // a value that can be used for PWM
- motorSpeed = analogRead(potPin)/4;
- // if the on/off button changed state since the last loop()
- if(onOffSwitchState != previousOnOffSwitchState){
- // change the value of motorEnabled if pressed
- if(onOffSwitchState == HIGH){
- motorEnabled = !motorEnabled;
- }
- }
- // if the direction button changed state since the last loop()
- if (directionSwitchState != previousDirectionSwitchState) {
- // change the value of motorDirection if pressed
- if (directionSwitchState == HIGH) {
- motorDirection = !motorDirection;
- }
- }
- // change the direction the motor spins by talking
- // to the control pins on the H-Bridge
- if (motorDirection == 1) {
- digitalWrite(controlPin1, HIGH);
- digitalWrite(controlPin2, LOW);
- }
- else{
- digitalWrite(controlPin1, LOW);
- digitalWrite(controlPin2, HIGH);
- }
- // if the motor is supposed to be on
- if (motorEnabled == 1) {
- // PWM the enable pin to vary the speed
- analogWrite(enablePin, motorSpeed);
- }else {
- //if the motor is not supposed to be on
- //turn the motor off
- analogWrite(enablePin, 0);
- }
- // save the current On/Offswitch state as the previous
- previousDirectionSwitchState = directionSwitchState;
- // save the current switch state as the previous
- previousOnOffSwitchState = onOffSwitchState;
- }
- lcd.noBlink();
- delay(3000);
- lcd.blink();
- delay(3000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement