23-02-2018, 09:35
Hej,
na początku od razu uprzedzam, że jestem kompletnym amatorem.
Zamarzył mi się mały pozycjoner, który mechanicznie zrobiłem sobie z prowadnicy lasera od starego CD'ka
Sterować nim chce za pomocą IR - pilota już mam, guziki sobie zdekodowałem.
Lewo/Prawo mi jedzie ale tylko zadaną wartość w krokach, którą mu podałem.
Chciałbym na początku dodać funkcje
Trzymam guzik/przycisk "A" - tak długo jak trzymam tak długo jedzie w prawo z określoną w programie prędkością
guzik/przycisk "B" - analogicznie to samo tylko w lewo
ewentualnie dodać rampę, że z upływem czasu prędkość narasta ?
Pomoże ktoś?
na początku od razu uprzedzam, że jestem kompletnym amatorem.
Zamarzył mi się mały pozycjoner, który mechanicznie zrobiłem sobie z prowadnicy lasera od starego CD'ka
Sterować nim chce za pomocą IR - pilota już mam, guziki sobie zdekodowałem.
Lewo/Prawo mi jedzie ale tylko zadaną wartość w krokach, którą mu podałem.
Chciałbym na początku dodać funkcje
Trzymam guzik/przycisk "A" - tak długo jak trzymam tak długo jedzie w prawo z określoną w programie prędkością
guzik/przycisk "B" - analogicznie to samo tylko w lewo
ewentualnie dodać rampę, że z upływem czasu prędkość narasta ?
Pomoże ktoś?
Kod:
#include "Stepper.h"
#include "IRremote.h"
/*----- Variables, Pins -----*/
#define STEPS 32 // Number of steps per revolution of Internal shaft
int Steps2Take; // 2048 = 1 Revolution
int receiver = 6; // Signal Pin of IR receiver to Arduino Digital Pin 6
/*-----( Declare objects )-----*/
// Setup of proper sequencing for Motor Driver Pins
// In1, In2, In3, In4 in the sequence 1-3-2-4
Stepper small_stepper(STEPS, 8, 10, 9, 11);
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results; // create instance of 'decode_results'
void setup()
{
irrecv.enableIRIn(); // Start the receiver
}
void loop()
{
if (irrecv.decode(&results)) // have we received an IR signal?
{
switch(results.value)
{
case 0x8C549057: // UP button pressed
small_stepper.setSpeed(500); //Max seems to be 700
Steps2Take = 10; // Rotate CW
small_stepper.step(Steps2Take);
delay(2000);
break;
case 0xDE5526F7: // DOWN button pressed
small_stepper.setSpeed(500);
Steps2Take = -10; // Rotate CCW
small_stepper.step(Steps2Take);
delay(2000);
break;
}
irrecv.resume(); // receive the next value
}
}/* --end main loop -- */