Skocz do zawartości

Potencjometry, problem z zaprogramowaniem, linijek kodu, które działają niezależnie od siebie.


DamianZiemba

Pomocna odpowiedź

Cześć, mam bardzo dużą prośbę, mianowicie ostatnimi czasy próbuję zaprogramować kilka potencjometrów ( w tym kodzie aktualnie występują 2), które są przymocowane do sprężynki, (po naciągnięciu jej i puszczeniu potencjometr wraca do poprzedniego stanu). Niestety podczas naciągania obydwu potencjometrów, w monitorze portu szeregowego, działają one antagonistycznie, oznacza to że jak naprężam 1 potencjometr to w ciągu 5 sekund jest on w stanie wysłać literkę F ( tak jest zaprogramowany) 100 razy, lecz gdy naciągam obydwa to w pewnym sensie program się miesza przez co wysyła on pomieszaną linijkę, która jest źle odczytywana. Czy jest szansa aby dla danego potencjometru była oddzielna linijka w monitorze portu szeregowego. Np 1 wysyła FFFFFFFfffffff a niżej jest 2 która wysyła SSSSSSsssss, najzwyczajniej aby nie były od siebie zależne w żaden sposób? Z góry bardzo dziękuję za pomoc.

 

 

 

#include <Wire.h>

int Z = 0;
int X = 0;


int Z_kod = A1;
int X_kod = A3;

int Z_high = 0;
int Z_low  = 0;
int X_high = 0;
int X_low = 0;

bool bool_caliberate = false;

int response_time = 10;


void setup() {
 
  Wire.begin();
  Serial.begin(38400);
  delay(100);
}

void loop() { 


  Z = analogRead(Z_kod);
  X = analogRead(X_kod);

if (bool_caliberate == false ) {
    delay(50);

    Z_high = (Z * 1.15);
    Z_low =  (Z * 0.9);
   
    X_high = (X * 1.03);
   X_low =  (X * 0.9);


    
    bool_caliberate = true;
  }

  delay(10);
if (Z >= Z_high) {
    Serial.print("F");
    delay(10);
  }
if (Z <= Z_low) {
    Serial.print("f");
    delay(10);
  }
if (X >= X_high) {
    Serial.print("S");
    delay(10);
  }
if (X <= X_low) {
    Serial.print("s");
    delay(10);
  }


  
else{ delay (5);
  }
 }

 void debug_flex() {
  Serial.print("Z:");
  Serial.print(Z);
  Serial.print("\t");


 
  Serial.print("Z High: ");
  Serial.print(Z_high);
  Serial.print("\t");
  Serial.print("Z Low: ");
  Serial.print(Z_low);
  Serial.print("\t");

  Serial.print("X:");
  Serial.print(X);
  Serial.print("\t");

   Serial.print("X High: ");
  Serial.print(X_high);
  Serial.print("\t");
  Serial.print("X Low: ");
  Serial.print(X_low);
  Serial.print("\t");
  Serial.println();
  }

 

Edytowano przez DamianZiemba
Link do komentarza
Share on other sites

33 minuty temu, DamianZiemba napisał:

Czy jest szansa aby dla danego potencjometru była oddzielna linijka w monitorze portu szeregowego.

Nie ma, gdyż nie ma możliwości aby wrócić do linijki, którą się już opuściło. Takie rzeczy są możliwe np. w wyświetlaczu LCD.

Jako jakieś obejście można sformatować wydruk w dwóch kolumnach - dane dla pierwszego potencjometru na początku wiersza, a dla drugiego np. w połowie ekranu - operując odpowiednio znakami tabulacji.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

3 minuty temu, jand napisał:

Nie ma, gdyż nie ma możliwości aby wrócić do linijki, którą się już opuściło.

W Arduinowym monitorze to raczej nie, ale kto każe używać Arduinowego monitora? Trzeba tylko wybrać coś co daje sobie radę z kodami ANSI (np. PuTTY).

A taki ładny opis co to są te kody jest np. tutaj

 

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Bez przesady, jeśli ktoś potrafi napisać prosty program to poradzi sobie z ANSI (szczególnie że to kwestia patrzenia w tabelkę i skopiowania kilku znaczków). A umiejetność kliknięcia w ikonke PuTTY na pulpicie to też żadna wiedza tajemna.

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.