Skocz do zawartości

kris2k

Użytkownicy
  • Zawartość

    54
  • Rejestracja

  • Ostatnio

Reputacja

2 Neutralna

O kris2k

  • Ranga
    4/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    TG
  • Zawód
    CAD Design
  • Moje zainteresowania:
    podstawy elektroniki

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Trochę pogrzebałem przy tym kodzie i przy pomocy pięciu timerów wysyłam poszczególne ramki z każdej grupy pięciu ramek. Nie jest to jakieś zaawansowane rozwiązanie, ale działa A dla bardziej ciekawskich, wstawiam filmik z auta:
  2. kris2k

    Licznik do gier racingowych

    Fajne to nawet... ale rozumiem ze calosc dziala tylko z licznikami ktore nie maja obslugi linii CAN ktora w nowszych autach odpowiada za sterowanie wskazaniami predkosci, rpm'ow, poziomu paliwa itd. ?
  3. Im dalej w las, tym drzew więcej... pojawiła się pewna niedogodność związana z freezowaniem programu. Funkcja TripLinka jak i ABL (czyli mruganie awaryjnymi przy gwałtownym hamowaniu) są zaimplementowane bez żadnych delayów, wszystko na millis() lub z biblioteki timers.h Ponieważ w swoim projekcie poszedłem jeszcze dalej, i stworzyłem mini tryb diagnostyczny auta, gdzie dane z samochodu wyświetlam on-line na wyświetlaczu LCD na zegarach (mam tam pozycje przepustnicy, doładowanie i akcelerometr) rodzi to czasami problemy. Otóż, aby wyświetlić dane na LCD, trzeba wysłać siecią CAN
  4. Panowie, pytanie pokrewne z zakresu Arduino i jego obecności w aucie. Czy każdorazowo przy podpinaniu laptopa i wgrywaniu nowego programu do Arduino trzeba odcinać zasilanie płytki? Czy pomimo faktu ze płytka jest zasilona gniazdem DC (poprzez mala przetwornice step-down 12V->9V) mogę jednocześnie podpiąć kabelek USB? Na ten moment zawsze zasilanie odpinam, ale czy muszę?
  5. Absolutnie tak, wszystko odbywa się bez ingerencji w instalację elektryczna auta. Pasy mają dodatkowe małe czujki kontaktronowe Fizyczne gmeranie przy pasach które mają powiązanie z AirBag'ami nie byłoby mądre
  6. Super, dziękuje za wskazówki! Projekt się rozwija i powoli zaczynam używać wielu różnych wejśc/wyjść jak i samych pinów GND i 5V (używam płytki Arduino Mega) i zaczynam się zastanawiać jak dużo rzeczy mogę tam nawpychać Robię to trochę na czuja, ale teraz bardziej świadomie postaram się nie przekraczać tych 20mA jak i 200mA. Do 5V/GND mam podpiętych w sumie 24diody programowalne RGB (mały prąd pobierają bo nie świecą na 100% jasności), reszta wyjść/wejść służy do odczytu zapiętych klamer od pasów bezpieczeństwa, jest też jedno wyjście sterujące przekaźnikiem od świateł awaryjn
  7. Reasumujac... Z pinu VCC (+5V) mozna pobrac max. 200mili Amper... ale z pinow wejsciowych/wyjsciowych juz tylko max. 20mili Amper?
  8. Czyli w praktyce, akurat takich obwodów jak poniżej mogę dopiąć bardzo dużo (tyle ile mam wejsc, czyli 13cyfrowych+5analogow), a limitem będzie to, aby opornik nie był mniejszy niż 0,025 Ohm? (Liczone wprost z prawa Ohma I=U/R -> R=U/I gdzie zmienne: 5V i 200mA) ? Czy raczej akurat konkretnie w tym wypadku nie ma to absolutnie żadnego znaczenia bo prąd pomiędzy pinem 5V i GND tak czy siak nie popłynie większy niż 200mA bo tyle może dać płytka i koniec a ja de facto w tym układzie nie podpinam żadnych odbiorników prądu a jedynie odczytuje stan zwarty/rozwarty ?
  9. Panowie, mam szybkie pytanie. Zrobiłem użytek z jednej z Waszych podpowiedzi, czyli rozpoznawania stanu wciśniętego guzika. https://www.arduino.cc/en/Tutorial/StateChangeDetection Moje pytanie brzmi: Czy wyjsciami 5V i GND mogę obsłóżyć (zasilić) kilka takich obwodów(gałęzi) ? Każdy obwód oczywiści będzie sprawdzany innym pinem cyfrowym, tylko masa i 5V będą wspólne dla wszystkich.
  10. W miedzy czasie przeprosiłem się z biblioteką Timers.h i uzyskałem to co chciałem dzięki niej ;) ale Twoje rady też już wdrożyłem i nawet przerobiłem kod na działający przykład z przyciskiem. W końcu to sobie wytłumaczyłem po swojemu (o co chodzi ze stanem i jego zmianą) i zaskoczyło... SUPER, bardzo dziękuję za pomoc i cierpliwość!!! bool coRobimy = false; unsigned long czasStartu = 0; int X = 0; int CZAS_MIGNIECIA = 500; void setup() { pinMode(6, INPUT_PULLUP); //Przycisk jako wejście Serial.begin(115200); } void loop() { if ( digitalRead(6) == LOW && coRobimy =
  11. ethanak, bardzo fajnie mi rozpisałeś metodologię i jestem za to bardzo wdzięczny, co do zasady, zrozumiałem :) Zatarłem rączki i zacząłem to przepisywać w program który mógłby coś robić, więc wstawiam mój ćwiczeniowy kod, wraz z pytaniem dot. jego działania (bo jakże inaczej, nie działa :P ) Domyślam się że coś jest nie tak jak powinno ze zmienną czasWykonania, sposób jej wyliczenia w tym kodzie zawsze daje zero, więc całość nie generuje cyklicznych zmian 1/0. const int ledPin = LED_BUILTIN;// the number of the LED pin unsigned long previousMillis = 0; // will store last tim
  12. A to też bardzo sprytny kawałek kodu, zapewne użyję prędzej czy później. Dzięki! (Cykl 6 razy po to żeby przekaźnik którym będę sterować pozostawić w pozycji otwartej -> przewody rozwarte -> kierunek zgaszony). Generalnie chodzi o to żeby zacząć od włączenia a zakończyć na wyłączeniu. Na ten moment muszę się skupić na wykonaniu sekwencji konkretną ilość razy po kliknięciu przycisku. Co do zasady, kod slon'a (przerobiony z mrugania LED'em) działa bardzo dobrze, nawet mogę zmusić go do wykonania się konkretną ilość razy... ale działa to tylko po zainicjowaniu pracy Ardu
  13. Informacyjnie dla niedowiarków Wasze podpowiedzi bardzo mocno przyczyniają się do rozbudowy mojego projektu i jak najbardziej z nich korzystam, tutaj z akcelerometrem ADXL345. Czyli aktywacja awaryjnych przy gwałtownym hamowaniu. Przykład na filmiku poniżej: Zastosowałem kod ethank'a a później przerobiłem go na kod slon'a. Dzięki temu nie wysyłam tony niepotrzebnych zdublowanych komunikatów do linii CAN, a tylko co 250ms zmieniam komunikat: int sekwencjaCzynnosciACC() { byte A = 0x00; if (aktualnyCzas - previousMillis >= interval) // ten IF
  14. Idąc tropem Slon'a, póki co, wywaliłem funkcje i wpisuje kod od razu w głównym IF'ie (jak opanuje sytuacje to potem wrzucę to do funkcji). Wszystko działa poza tym, że mam problem z poprawnym zdefiniowanym ostatniego warunku który ma drukować zmiany tylko przez 3sek. (przy interwale 0,5sek mamy 6cykli). Zmienną ledState zmieniłem na bool, wartościami 0x60 i 0x50 się nie przejmujcie, to jest ćwiczenie komend do wysyłania danych na linie CAN. if (digitalRead(6) == LOW ) { //Jeśli przycisk wciśnięty click1 = true; //startuje zliczanie czasu klikniecia } else { zapamiet
  15. Jeżeli moja logika myślowa jest poprawna to właśnie uświadomiłem sobie gdzie leży mój problem. No to opowiadam: if (digitalRead(6) == LOW ) { //Jeśli przycisk wciśnięty click1 = true; //startuje zliczanie czasu klikniecia } else { zapamietanyCzas = aktualnyCzas; // zapamietuje kiedy zjawisko ustało, tutaj, przycisk zostal puszczony, ewentualnie nigdy nie klikniety click1 = false; //stopuje zliczanie czasu klikniecia } if (click1 == true) { dlugoscKliku = aktualnyCzas - zapamietanyCzas; //zapamietuje roznice w czasie trwania stanu LOW, czyli pokazuje czas pr
×
×
  • 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.