int potpin = 25;
int val;
#define COM 27
#define Ap 18 // A+ line
#define Am 19 // A- line
#define Bp 5 // .
#define Bm 17
int count = 0;
int I=0;
const uint8_t controlPins[] = { 23, 22, 21, 15 };
int readMux(int channel)
{
for(int i = 0; i < 4; i ++)
{
digitalWrite(controlPins[i], channel >> i & 1);
}
return digitalRead(COM);
delay(1);
}
void setup() {
Serial.begin(115200);
pinMode(2, INPUT_PULLUP);
pinMode(16, INPUT_PULLUP);
pinMode(4, OUTPUT);
pinMode(Ap,OUTPUT); pinMode(Am,OUTPUT);
pinMode(Bp,OUTPUT); pinMode(Bm,OUTPUT);
pinMode(COM, INPUT);
for (int i = 0; i < 4; ++i)
{
pinMode(controlPins[i], OUTPUT);
}
}
void loop() {
digitalWrite(4,digitalRead(2));
val = analogRead(potpin);
//Serial.print(val);
int analogValue = analogRead(27);
//Serial.print(analogValue);
for(int i = 0; i < 16; ++i)
{
if (readMux(i))
{
Serial.print(analogValue);
}
delay(1);
}
if ( I++ <(count+=2) and (digitalRead(16)==1) ) { // stop after 25*4 steps (=100) - quarter turn with gearRatio "2:1"
delay(4095/val+1);
digitalWrite(Bm,LOW) ; digitalWrite(Ap,HIGH);
delay(4095/val+1);
digitalWrite(Ap,LOW) ; digitalWrite(Bp,HIGH);
delay(4095/val+1);
digitalWrite(Bp,LOW) ; digitalWrite(Am,HIGH);
delay(4095/val+1);
digitalWrite(Am,LOW) ; digitalWrite(Bm,HIGH);
} //else while(1);
delay(5);
}
ЛЗ
ДВ
Регулятор скорости
0
100