Program na attiny symulujący zapalającą się świetkówkę

czyli cała reszta elektroniki - jak OSD, Autopiloty, itp

Moderatorzy: moderatorzy2014, moderatorzy

Awatar użytkownika
mikun
Posty: 2540
Rejestracja: środa 26 maja 2010, 21:40
Lokalizacja: Poznań

Program na attiny symulujący zapalającą się świetkówkę

Post autor: mikun »

Czy ktoś z kolegów widział/znalazł/wie gdzie mogę znaleźć wsad do attiny który wysteruje tranzystor zapalając diodę LED tak jakby włączała się świetlówka na zwykłym starterze? Chodzi mi o to by mrugała spontanicznie przed zapaleniem jak robi to świetlówka starego typu na bimetalicznym starterze?


Coś na wzór tego na filmie (trzeba przewinąć do 4:50 i poczekać parę sekund :-) ) tyle że 2 razy wolniej

Wyświetlanie na innych stronach niż YT zostało wyłączone trzeba kliknąć na OBEJRZYJ W YOUTUBE

Awatar użytkownika
ECO400
Posty: 5743
Rejestracja: poniedziałek 01 lut 2010, 13:53
Lokalizacja: Wrocław

Post autor: ECO400 »

nie wiem, ale fajna scena :-P
wcześniej nie oglądałem tego filmu
Awatar użytkownika
slawko_k
Posty: 1596
Rejestracja: niedziela 28 lut 2010, 14:24
Lokalizacja: podkarpackie

Post autor: slawko_k »

Na filmie widać jakby 3-4 razy szybko błysnęło i zapala się.
Potrzebujesz coś takiego czy faktycznie losowej spontaniczności świetlówki
Awatar użytkownika
mikun
Posty: 2540
Rejestracja: środa 26 maja 2010, 21:40
Lokalizacja: Poznań

Post autor: mikun »

Potrzebuje coś takiego jak na filmie chyba lepiej się zapala niż stara świetlówka :-) +5 do lansu heh
...i tak nie skończysz na jednym ani na dwóch :-)
Awatar użytkownika
mikun
Posty: 2540
Rejestracja: środa 26 maja 2010, 21:40
Lokalizacja: Poznań

Re: Program na attiny symulujący zapalającą się świetkówkę

Post autor: mikun »

Odkopuję temat z przed ponad 6ciu lat, kurka dałbym głowę że pisałem tego posta max 3 lata temu :). Dorwałem kod ale jest na WS2811, kod nie działa z WS2812 mimo iż czytałem że sygnałowo są kompatybilne. Czy ktoś z kolegów obeznanych w programowaniu arduino mógłby mi zmienić kod na zwykłą diodę LED lub na WS2812? Jeśli oczywiście nie ma za dużo grzebania :)



Filmik z działania:






Kod

Kod: Zaznacz cały

#define DATA_PIN 3
#define BUTTON_PIN 4

boolean lightOn = 0;

void setup() { 
  pinMode(DATA_PIN, OUTPUT);
  pinMode(BUTTON_PIN, INPUT);     
}

const int blinkOn[] = {10, 20, 20, 240, 20, 40, 20, 100, 20, 20, 20, 260, 80, 20, 240, 60, 160, 20, 240, 20, 1000, 20, 20, 40, 100, 20, 2740, 340, 860, 20, 1400, 20, 60, 20};

void allOn(boolean on) {
  digitalWrite(DATA_PIN, on);
}  

void updateLeds() {
  allOn(lightOn);
}

boolean myDelay(unsigned int ms) {
  unsigned long startTime = millis();
  unsigned long endTime = startTime+ms; 
  

  while(millis() < endTime) {
    if(!digitalRead(BUTTON_PIN)) {
      return 1;
    }
    // Update colour and intencity of leds
    updateLeds();
    delay(1);
  }
  return 0;
}

void turnOn() {
  // Don't flicker, if the light is already on
  if(lightOn)
    return;
    
  // Start to flicker
  for(int i=0; i<sizeof(blinkOn)/sizeof(int); ++i) {
    lightOn = !(i&1);
    if(myDelay(blinkOn[i])) {
      // Button is no longer pushed
      allOn(false);
      lightOn = false;
      return;
    }
  }

  // Make sure the light is actually on
  allOn(true);
  lightOn = true;
}

void turnOff() {
  lightOn = false;
  allOn(false);
}

void loop() { 
  delay(100);
  if(digitalRead(BUTTON_PIN))
    turnOn();
  else 
    turnOff();
}
...i tak nie skończysz na jednym ani na dwóch :-)
Awatar użytkownika
miś
Posty: 9242
Rejestracja: niedziela 07 lut 2010, 15:24
Lokalizacja: Bytom

Re: Program na attiny symulujący zapalającą się świetkówkę

Post autor: miś »

Przecież ten kod jest do zwykłej ledy sterowanej z pinu D3 arduino a nie do jakichśtam WS'ów...
Wysoki na pinie to włącz LED, niski na pinie to zgaś.
Pzdr. -----MIŚ-----
Awatar użytkownika
mikun
Posty: 2540
Rejestracja: środa 26 maja 2010, 21:40
Lokalizacja: Poznań

Re: Program na attiny symulujący zapalającą się świetkówkę

Post autor: mikun »

Wgrałem kod na digisparka ale dzieje się odwrotnie :) po podaniu zasilania dioda się włącza i świeci. W momencie kiedy podam stan wysoki na port 4 dioda zaczyna symulować świetlówkę po czym gaśnie.
...i tak nie skończysz na jednym ani na dwóch :-)
Awatar użytkownika
miś
Posty: 9242
Rejestracja: niedziela 07 lut 2010, 15:24
Lokalizacja: Bytom

Re: Program na attiny symulujący zapalającą się świetkówkę

Post autor: miś »

A diodę masz do masy czy do plusa ? W każdym bądź razie powinna być odwrotnie niż masz teraz :mrgreen:
A jak chcesz zmienić w sofcie to zmień
digitalWrite(DATA_PIN, on);
na
digitalWrite(DATA_PIN, !on);
Pzdr. -----MIŚ-----
Awatar użytkownika
StaryDzolero
Posty: 77
Rejestracja: czwartek 06 sie 2015, 09:44
Lokalizacja: Poznań

Re: Program na attiny symulujący zapalającą się świetkówkę

Post autor: StaryDzolero »

mikun, nie prościej bez przycisku ? Będziesz miał tak jak opisujesz w pierwszym poście ;P

Kod: Zaznacz cały

#define DATA_PIN 3
boolean lightOn = 0;

void setup() { 
  pinMode(DATA_PIN, OUTPUT);    
}

const int blinkOn[] = {10, 20, 20, 240, 20, 40, 20, 100, 20, 20, 20, 260, 80, 20, 240, 60, 160, 20, 240, 20, 1000, 20, 20, 40, 100, 20, 2740, 340, 860, 20, 1400, 20, 60, 20};

void allOn(boolean on) {
  digitalWrite(DATA_PIN, on);
}  

void updateLeds() {
  allOn(lightOn);
}

boolean myDelay(unsigned int ms) {
  unsigned long startTime = millis();
  unsigned long endTime = startTime+ms; 
  

  while(millis() < endTime) {
    updateLeds();
    delay(1);
  }
  return 0;
}

void turnOn() {
  // Don't flicker, if the light is already on
  if(lightOn) return;
    
  // Start to flicker
  for(int i=0; i<sizeof(blinkOn)/sizeof(int); ++i) {
    lightOn = !(i&1);
    myDelay(blinkOn[i]);
  }

  // Make sure the light is actually on
  allOn(true);
  lightOn = true;
}

void loop() { 
  if(!lightOn) turnOn();
  else allOn(true);
}
Hexa Tarot 690__| Lisam LS210
Pioneer 1400____| Hubsan Q4
Hubsan h107d___| QAV250
Eachine QX90____| s500
i się rozrasta :)
Awatar użytkownika
mikun
Posty: 2540
Rejestracja: środa 26 maja 2010, 21:40
Lokalizacja: Poznań

Re: Program na attiny symulujący zapalającą się świetkówkę

Post autor: mikun »

Dzięki StaryDzolero masz rację bez tego przycisku o wiele lepiej :-) tyle że po mruganiu dioda gasła. Z programowania jestem kiepski wręcz zerowy :-) ale kombinowaniem zmieniłem w ostatniej linijce kodu z true na false i już świeci cały czas. Teraz tylko już dobrać wartości z piątej linijki kodu. Miś i StaryDzolero dziękuję za pomoc.
...i tak nie skończysz na jednym ani na dwóch :-)
Awatar użytkownika
miś
Posty: 9242
Rejestracja: niedziela 07 lut 2010, 15:24
Lokalizacja: Bytom

Re: Program na attiny symulujący zapalającą się świetkówkę

Post autor: miś »

mikun pisze: zmieniłem w ostatniej linijce kodu z true na false
A miałeś zmienić tak jak ja Ci proponowałem (z tym !on). Bo teraz na końcu Ci się zaświeca na stałe, ale przy miganiu czasy masz odwrócone, czyli w momencie jak ma być zgaszone to się świeci i na odwrót. Dla tego wygląda to nienaturalnie.
Pzdr. -----MIŚ-----
ODPOWIEDZ