• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
stan niski na pinie 7
#1
Witam

problem polega na niskim stanie na pinie 7 ponieważ moja wiedza w tym temacie jest bardzo mała.
Stan jest podzielony na 3 osie X,Y i Z po wychyleniu wszystkich osi pojawia się 5V dwie osie 3.4V natomiast na jednej 1.7V


Kod:
#define joystick1     A0
#define pwm1          3
#define pwm2          5
#define joystick2     A1
#define pwm3          6
#define pwm4          9
#define joystick3     A2
#define pwm5         10
#define pwm6         11
#define analog7       7

int motor_control;

void setup() {
 
pinMode(pwm1,   OUTPUT);
pinMode(pwm2,   OUTPUT);
pinMode(pwm3,   OUTPUT);
pinMode(pwm4,   OUTPUT);
pinMode(pwm5,   OUTPUT);
pinMode(pwm6,   OUTPUT);
pinMode(7,   OUTPUT);

}

void loop() {


motor_control = analogRead(joystick1);
motor_control>>= 1;
if(motor_control> 265){
digitalWrite(pwm2, 0);
analogWrite(pwm1, (motor_control - 365));
digitalWrite(7,  HIGH);
  }
  else
if(motor_control< 240){
digitalWrite(pwm1, 0);
analogWrite(pwm2, (140 - motor_control));
digitalWrite(7,  HIGH);
    }
else{
digitalWrite(pwm1, 0);
digitalWrite(pwm2, 0);
digitalWrite(7,  LOW);
    }

motor_control = analogRead(joystick2);
motor_control>>= 1;
if(motor_control> 265){
digitalWrite(pwm4, 0);
analogWrite(pwm3, (motor_control - 365));
digitalWrite(7,  HIGH);
  }
  else
if(motor_control< 240){
digitalWrite(pwm3, 0);
analogWrite(pwm4, (140 - motor_control));
digitalWrite(7,  HIGH);
    }
else{
digitalWrite(pwm3, 0);
digitalWrite(pwm4, 0);
digitalWrite(7,  LOW);
    }
motor_control = analogRead(joystick3);
motor_control>>= 1;
if(motor_control> 260){
digitalWrite(pwm6, 0);
analogWrite(pwm5, (motor_control - 380));
digitalWrite(7,  HIGH);
  }
  else
if(motor_control< 240){
digitalWrite(pwm5, 0);
analogWrite(pwm6, (130 - motor_control));
digitalWrite(7,  HIGH);
    }
else{
digitalWrite(pwm5, 0);
digitalWrite(pwm6, 0);
digitalWrite(7, LOW);
    }

}
 
Odpowiedź
#2
Jaki Arduino, jaki schemat?
Kup sobie analizator logiczny. Pewnie mierzysz multimetrem. Jeśli pin output ma na zmianę stan niski i stan wysoki, bo taki napisałeś kod, to na pinie będzie mierzone multimetrem średnia z 0 i 5V=2.5V. Jak zasilanie jest 4.8V to średnia będzie 2.4V, a jeśli przez 60% czasu stan będzie wysoki, a przez 40% niski, to zmierzone napięcie będzie analogicznie w takich proporcjach. Żeby zmierzyć na pinie stan wysoki w okolicach Vcc to on by musiał być w takim stanie przez sekundę(+/-).
Analizator jest do kupienia za ~40zł na Allegro. Alternatywnie może być oscyloskop, ale to trudniejsza i droższa zabawka.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#3
arduino uno poradziłem już z tymi napięciami komendą delay
Kod:
#define joystick1     A0
#define pwm1          3
#define pwm2          5
#define joystick2     A1
#define pwm3          6
#define pwm4          9
#define joystick3     A2
#define pwm5         10
#define pwm6         11
#define digital7     7


int motor_control;

void setup() {
 
pinMode(pwm1,   OUTPUT);
pinMode(pwm2,   OUTPUT);
pinMode(pwm3,   OUTPUT);
pinMode(pwm4,   OUTPUT);
pinMode(pwm5,   OUTPUT);
pinMode(pwm6,   OUTPUT);
pinMode(7,   OUTPUT);

}

void loop() {


motor_control = analogRead(joystick1);
motor_control>>= 1;
if(motor_control> 280){
digitalWrite(pwm2, 0);
analogWrite(pwm1, (motor_control - 345));
digitalWrite(7,  (HIGH));
delay (100);
  }
  else
if(motor_control< 235){
digitalWrite(pwm1, 0);
analogWrite(pwm2, (170 - motor_control));
digitalWrite(7,  (HIGH));
delay (100);
    }
else{
digitalWrite(pwm1, 0);
digitalWrite(pwm2, 0);
digitalWrite(7,  (LOW));
    }

motor_control = analogRead(joystick2);
motor_control>>= 1;
if(motor_control> 280){
digitalWrite(pwm4, 0);
analogWrite(pwm3, (motor_control - 345));
digitalWrite(7,  (HIGH));
delay (100);
  }
  else
if(motor_control< 235){
digitalWrite(pwm3, 0);
analogWrite(pwm4, (170 - motor_control));
digitalWrite(7,  (HIGH));
delay (100);
    }
else{
digitalWrite(pwm3, 0);
digitalWrite(pwm4, 0);
digitalWrite(7,  (LOW));

    }
motor_control = analogRead(joystick3);
motor_control>>= 1;
if(motor_control> 280){
digitalWrite(pwm6, 0);
analogWrite(pwm5, (motor_control - 380));
digitalWrite(7,  (HIGH));
delay (100);
  }
  else
if(motor_control< 235){
digitalWrite(pwm5, 0);
analogWrite(pwm6, (130 - motor_control));
digitalWrite(7,  (HIGH));
delay (100);
    }
else{
digitalWrite(pwm5, 0);
digitalWrite(pwm6, 0);
digitalWrite(7, (LOW));

    }

}
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości