Skocz do zawartości

Orzeszek

Użytkownicy
  • Zawartość

    2
  • Rejestracja

  • Ostatnio

Informacje

  • Płeć
    Mężczyzna
  • Zawód
    Elektronik
  • Moje zainteresowania:
    Elektronika

Osiągnięcia użytkownika Orzeszek

Aktywny debiutant

Aktywny debiutant (2/19)

  • Młodszy Juror
  • To już rok!

Odznaki

0

Reputacja

  1. O Kurczaczki... Wielkie dzięki za pomoc 🙂 Problem rozwiązany, przepiąłem diodę wyświetlacza na pin 11 (taki, na którym używanie biblioteki nie dezaktywuje PWM) i wszystko jest w porządku. Jeszcze raz wielkie dzięki za pomoc, biorę się za rozbudowę programu 🙂
  2. Witam wszystkich Jestem początkujący z arduino i napotkałem pewien problem. Programuję coś na kształt "testera" serwomechanizmu SG90. Program na tę chwilę jest niewielki, ponieważ utknąłem w miejscu... Mianowicie, po rozpoczęciu programu, w funkcji "loop" znajduje się przełączanie między funkcjami wybierania ustawiania jasności wyświetlacza 16x2, a funkcją manualnego poruszania serwem przy pomocy wejścia analogowego. Program działa idealnie dopóki nie przypiszę serwa do danego pinu... Po funkcji "serwo.attach(PinSerwa)" ustawienie jasności wyświetlacza nie działa. Po przypisaniu serwa do pinu, pin, do którego podpięta jest dioda wyświetlacza "przechodzi" w tryb 0-1, i gdy wypełnienie jasności nie jest maksymalne, to dioda doświetlająca w ogóle nie świeci. Można dalej przełączać się między funkcjami, można sterować serwem, lecz dioda wyświetlacza świeci się tylko gdy wartość wypełnienie ustawiona jest na 255. Dodam, że po usunięciu z programu funkcji "serwo.attach" cały program działa dobrze, ustawiona jasność wyświetlacza pozostaje ciągle taka sama aż do kolejnej zmiany. Wyświetlacz wyświetla odpowiednie wychulenie serwa, wszystko jest w porządku, rzecz jasna serwo nie reaguje. /* ARDUINO LEONARDO * Wyswietlacz podlaczony do pinow 2,3,4,5,6,7, podswietlenie wyswietlacza do pinu 9. * Analog x do pinu A0, analog Y do pinu A1 * przycisk do pinu 12 * Dioda LED do pinu 13. * Serwo do pinu 11 */ #include <LiquidCrystal.h> #include <Servo.h> #define lcdLed 9 #define LED 13 #define przycisk 12 #define analogX A0 #define analogY A1 LiquidCrystal lcd(2,3,4,5,6,7); Servo serwo; int wartoscX = 0; int wartoscY = 0; byte jasnosc = 130; byte pozycja = 90; bool dioda = false; void setup(){ lcd.begin(16,2); lcd.clear(); lcd.setCursor(0,0); lcd.print("Witaj"); analogWrite(lcdLed, jasnosc); delay(1000); pinMode(przycisk, INPUT_PULLUP); pinMode(lcdLed, OUTPUT); pinMode(LED, OUTPUT); delay(1500); lcd.clear(); } void loop(){ //Ustawienie jasnosci wyswietlacza while(digitalRead(przycisk) == HIGH){ ustjasnosc(); } while(digitalRead(przycisk) == LOW){lcd.clear();delay(20);} //Sterowanie manualne serwem while(digitalRead(przycisk) == HIGH){ serwo.attach(11); sterujserwo(); } while(digitalRead(przycisk) == LOW){lcd.clear();delay(20);serwo.detach();} } void ustjasnosc(){ lcd.setCursor(0,0); lcd.print("Jasnosc"); if(analogRead(analogX) >=800){ if(jasnosc < 255){ jasnosc+=5; } } if(analogRead(analogX) <=200){ if(jasnosc > 0){ jasnosc-=5; } } if(jasnosc == 0){ lcd.setCursor(8,0); lcd.print("MIN"); } if(jasnosc > 0 && jasnosc < 10){ lcd.setCursor(8,0); lcd.print("00"); lcd.print(jasnosc); } if(jasnosc>=10 && jasnosc<100){ lcd.setCursor(8,0); lcd.print("0"); lcd.print(jasnosc); } if(jasnosc>=100 && jasnosc<255){ lcd.setCursor(8,0); lcd.print(jasnosc); } if(jasnosc==255){ lcd.setCursor(8,0); lcd.print("MAX"); } analogWrite(lcdLed, jasnosc); delay(50); } void sterujserwo(){ pozycja = map(analogRead(analogX), 0, 1023, 0, 180); lcd.setCursor(0,0); lcd.print("Serwo"); lcd.setCursor(0,1); if(pozycja <100){ lcd.print("0"); } lcd.print(pozycja); serwo.write(pozycja); delay(20); }
×
×
  • 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.