Pomoc z działaniem projektu - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica) +--- Wątek: Pomoc z działaniem projektu (/watek-pomoc-z-dzia%C5%82aniem-projektu) Strony:
1
2
|
RE: Pomoc z działaniem projektu - lightzone - 02-01-2022 Wrzucam kod: https://paste.ofcode.org/VKKdbgaExeS4R26nimb4A9 NIestety czas mam do dziś także jeśli chciałby ktoś pomóc za opłata to zapraszam na wiadomość prywatną. RE: Pomoc z działaniem projektu - Jarewa0606 - 03-01-2022 Nie rozumiem w czym masz problem?? Przecież silnik się kręci a wyświetlacz wyświetla.. RE: Pomoc z działaniem projektu - lightzone - 03-01-2022 Z tym, że chciałbym zrównoleglić program, bo wyświetlacz wyświetla ale po zakończeniu obrotu silnika. Są to małe odstępy czasu ale projekt wymaga tego, żeby działo się to równolegle. Udalo mi sie zastąpic funkcję delay() funkcjami micros(); ale wtedy jest problem z wyświetlaniem, posługiwałem się takim fragmentem kodu, czego funkcję while platają mi figlę a gdy wstawie coś w ich ciało silnik ogranicza prędkość obrotów void loop() { for (int s = 0; s < steps; s++){ time_a = micros(); digitalWrite(7, HIGH); digitalWrite(7, LOW); while(micros() - time_a < 3000){ } time_b = micros(); digitalWrite(7, LOW); while(micros() - time_b < 2000){ // do nothing } } while(1); } RE: Pomoc z działaniem projektu - Jarewa0606 - 03-01-2022 a czemu nie zrobisz tego na timerze? już nie mówię sprzętowe PWM ale niech choć macha pinem na przerwaniu. Jakie to ardunio jaka atmega?? Przykład dla atmegi 2560 i 328p Kod: #include <LiquidCrystal_I2C.h> RE: Pomoc z działaniem projektu - lightzone - 03-01-2022 Jest to arduino uno r3, na timerze to znaczy? RE: Pomoc z działaniem projektu - Jarewa0606 - 03-01-2022 To wyżej będzie działać... Timer to znaczy sprzętowe przerywanie. I to wyżej macha pinem na przerwaniu, wiec silnik działa niezależnie od programu wyświetlacza nawet gdybyś wstawił jakieś tam "delay" to silnik będzie kręcił po prostu czasami blokuje wyświetlacz (ale to dosłownie z 10 taktów zegara) by wykonała sie zmiana na pinie gdzie tego nawet nie zauważysz... RE: Pomoc z działaniem projektu - lightzone - 04-01-2022 Bardzo dziękuje,jestem mega wdzięczny, jedynym mankamentem było to , to że na wyświetlacz odświeża sie z bardzo duża częstotliowścią i nie wczytuje wartości funkcji : scale.get_units(). Po usunięciu lcd.clear, już tą wartość udało się uzyskać, jeszcze jedno pytanie, jak zwolnić nadpisywanie wartości siły adhezji na wyświetlaczu? Rozumiem, że odbywa się w to w tym fragmencie kodu: TCCR1A = 0; TCCR1B = 0; TCNT1 = 0; OCR1A = 624; // 400 Hz (16000000/((624+1)*64)) TCCR1B |= (1 << WGM12); TCCR1B |= (1 << CS11) | (1 << CS10); TIMSK1 |= (1 << OCIE1A); RE: Pomoc z działaniem projektu - Jarewa0606 - 04-01-2022 Nie tutaj lcd.setCursor(0,0);//ustawienie kursora lcd.print("Sila adhezji="); Po prostu daj delaya. Albo millis jak umiesz... Teraz twój problem polega na tym że LCD dostał kopa i nic go nie blokuje... Dlatego wyświetlacz szwankuje bo dane są bardzo szybko aktualizowane. A wcześniej niż zdążyło się wyświetlić to nastąpiło czyszczenie lcd.. po drugie ja tego nie rozumiem skoro to jest miernik jakiejś siły oderwania/przerwania to nie lepiej liczyć kroki odległości? i najwyższy Nm?? |