  | 
		 
			
			
			
			
			
	
		
			
  
 | 
	 		
	  			
	  				| 
						  Elektronika.lt portalo forumas 
						
						Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
						Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose. 
						 
						Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
						kurie nesilaiko forumo taisyklių.
						Pastebėjus nusižengimus, prašome pranešti. 
						 Dabar yra 2025 11 04, 15:07. Visos datos yra GMT + 2 valandos.
						
					 | 
				 
			 
 | 
		 | 
	 
 
	
		
	  | 
	
		
			 Forumas » Mikrovaldikliai » Arduino "plaukioja"
		
	 | 
 
	
		
		
			
				Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume 
			 | 
			
				
			 | 
			 
		 
		
	 | 
 
 
	  |  
 
	  | 
	 Arduino "plaukioja" | 
 
  
	
	
		 Parašytas: 2019 11 07, 11:12 | 
		        | 
	   | 
 
	
	
	
		| 
		
		 | 
		
			
			
				
 
	  | Enshteinas rašo: | 
	 
	
	   bet tas gėris trunka tik kelis ciklus, po keliu mirksėjimu, pabėga persijunginėjimo laikai ir kelis kart sublyksi, tada vel keli persijunginėjimai sklandūs, ir vėl sublyksi ir vėl skalndus... 
 
 
 
Nesu steūklas elektronikoj, o beto sudetingus dalykus daryt ir aiškintis nera daug laiko, tai nusprendžiau nebedaryti tokios ... | 
	 
 
 
 
Antra mintis geresnė    
 
 
O jei niekas iš ragatkės mirksinčių taikinių neišdaužys ir vis tik sugalvosi kada daryt, tai žiūrėk, kad valdymo impulsėliai nepersidengtų su tiristorių (simistoriu) sekančiais pusperiodžais. O tai ir sinchronizavus vis vien tas blykčiojimas mirgėjimo pavidale atsiras. | 
			 
		  | 
	 
	
		| 
		 | 
	 
	  | 
 
 
 | 
 
 
	  |  
 
	  | 
	 Arduino "plaukioja" | 
 
  
	
	
		 Parašytas: 2019 11 07, 14:10 | 
		        | 
	   | 
 
	
	
	
		| 
		
		 | 
		
			
			
				AlgisL dėkui už pagalbą.
 
 
minex su tavo kodu tas pats uždelsimas vienu metu ON ON
 
https://youtu.be/-n622JD2Sr0
 
 digitalWrite(L1, 0); // ON
 
delay(10);
 
digitalWrite(L2, 1); // OFF
 
delay(100);
 
 
digitalWrite(L2, 0); // ON
 
delay(10);
 
digitalWrite(L1, 1); // OFF
 
delay(100);
 
tik pagreitinau 
 
 
nufilmota slow montion 960fps
 
https://youtu.be/ZGnJGVHG__U
 
 
su mano kodu ir gerai ir blogai...
 
https://youtu.be/sMlpmETjKTo
 
 
slow montion... pradžioj abi OFF OFF nuo 0:11matosi kaip padeda graziau persijunginėti, nors irgi truputi uždelsia ant ON ON
 
https://youtu.be/p5iRxLxd-KU
 
 
Sauliucka manau tai ir vyksta, taigi speju sinchronizavimas nieko nepakeis | 
			 
		  | 
	 
	
		| 
		 | 
	 
	  | 
 
 
 | 
 
 
	  |  
 
	  | 
	 Arduino "plaukioja" | 
 
  
	
	
		 Parašytas: 2019 11 07, 14:19 | 
		        | 
	   | 
 
	
	
	
		| 
		
		 | 
		
			
			
				Jei isvedima i porta darysi po perejimo per 0, kai simistoriai jau issijunge, tai viskas bus ok.
 
Kaip varianta, siulau valdyti trumpais impulsais.
 
 
	  | Kodas: | 
	 
	
	  
 
ISR ( PCINTx_vect ) {
 
  PORTx = outb;
 
  _delay_ms( 5 );
 
  PORTx = 0;
 
  sync = 1;
 
}
 
 | 
	 
 
 
tada, jei kiek nors mikrosekundziu ir paveluosi su ijungimu, tai bent neperlipsi per pusperiodi, bet uztat nebe kritiska bus TIMER0_OVF pertrauktis.
 
 
Dar cia yra tai, kad viduj lempikes yra konderis, kuris issikrauna ne momentaliai, todel lempike dar kuri laika sviecia del uzsilikusio kruvio. | 
			 
		  | 
	 
	
		| 
		 | 
	 
	  | 
 
 
 | 
 
 
	  | 
	 Arduino "plaukioja" | 
 
  
	
	
		 Parašytas: 2019 11 07, 16:04 | 
		        | 
	   | 
 
	
	
	
		| 
		
		 | 
		
			
			
				Nu jo... terminų visokių idomių... jei ka arduino čiupinėju kelias dienas     tai ka per youtube išmokau tai pamirksinti lepmutes ir prisijungt potenciometra pakeitinėt delay time  )
 
bet stabilizuot procesa norėčiau, tai AlgisL jei turi kantrybes galiu pradėt klausinėt nuo maitinimo....       | 
			 
		  | 
	 
	
		| 
		 | 
	 
	  | 
 
 
 | 
 
 
	  |  
 
	  |  
 
	  |  
 
	  | 
	 Arduino "plaukioja" | 
 
  
	
	
		 Parašytas: 2019 11 07, 17:05 | 
		        | 
	   | 
 
	
	
	
		| 
		
		 | 
		
			
			
				Arduine jau yra 'krienas", tad uzteks tik betkokio 7,5V maitblokio nuo D-Link ar kazko panasaus pvz https://www.evita.lt/b-7-5v1500-maitinimo-saltinis-7-5v-1-5a-su-kistuku-dc-2-1-5-5mm-d-link?search=1500&sort=p.price&order=ASC&page=3
 
Bet jei valdysi simistorius, tai ju grandines patartina jungti per optronus i GND nuo atskiro galingesnio krieno su nedicku radiotoriuku.
 
5V i MOC30xx kuris neturi nulio deteksino, is jo per 390 omu rezistoriu i atmegos kojas. Simistoriaus puseje jungi 2 koja ir visus tabus (gali ant vieno radiatoriaus, jei reikia) i sakykim Neutrale. 3 simistoriaus koja per 330 omu varzike i MOC 4 6 kojas gali maisyti vietomis kaip tik tau patogiau. Lempas junk i 1 simistoriaus koja ir faze (patariu per saugikli).
 
Valdymas aktyviu '0'.
 
programoje rasai pvz:
 
 
	  | Kodas: | 
	 
	
	  
 
#include <avr/io.h>
 
#include <avr/interrupts.h>
 
#include <avr/progmem.h>
 
#include <utils/delay.h>
 
 
#define greitis 100 // pauze 1/100-siomis
 
#define port1 PORTB
 
#define port2 PORTD
 
 
const uint8_t EFEKTAI[] PROGMEM = (
 
      fedcba98     76543210
 
  0b0000000, 0b00000001,
 
  0b0000000, 0b00000010,
 
  0b0000000, 0b00000100,
 
  0b0000000, 0b00001000,
 
  0b0000000, 0b00010000,
 
  0b0000000, 0b00100000
 
// ir taip kol nusibos, paskutineje eiluteje gale nereikia kablio
 
);
 
const uint16_t eLen = sizeof(EFEKTAI);
 
 
volatile register uint8_t out1 asm("r2") = 0;
 
volatile register uint8_t out2 asm("r3") = 0;
 
volatile register uint8_t sync asm("r4") = 0;
 
 
ISR ( PCINTx_vect ) {
 
  _delay_us( 100 ); // kad tikrai persoktu "0"
 
  port1  = out1;
 
  port2  = out2;
 
  _delay_ms( 5 );
 
  port1  = 0;
 
  port2  = 0;
 
  sync   = 1;
 
  PCIFR = _BV(0); // 0,1,2 cia jau kuria koja panaudosi
 
}
 
 
static uint16_t index = 0;
 
static uint16_t cnt = 0; // greicio skaitliukas
 
 
void setup() {
 
  // portu nustatymai
 
  out2  = pgm_read_byte( index++ );
 
  out1  = pgm_read_byte( index++ );
 
  PCIFR = _BV(0);  // 0,1,2 zek auksciau
 
  PCICR = _BV(0);
 
  interrupts();
 
}
 
 
void loop() {
 
  if ( sync ) {
 
    if ( greitis <= ++cnt ) {
 
      cnt = 0;
 
      if ( eLen <= index ) index = 0;
 
      out2 = pgm_read_byte( index++ );
 
      out1 = pgm_read_byte( index++ );
 
    }
 
    sync = 0;
 
  }
 
}
 
 | 
	 
 
 
rasau is atminties, tad gali buti sintakses klaidu.
 
tavo schema _BEVEIK_ tinka (tik nejunk maitinimo i USB arba RJ45 lizdus) ir ji lygtais valdymas "1"
 
jei valdymas "0", tai pakeisti 
 
out2 = 0xFF ^ pgm_read_byte( index++ );
 
out1 = 0xFF ^ pgm_read_byte( index++ );
 
0xFF cia tie bitai, kurie valdo
 
iejimu bitai turi buti 0, kad neijungtu PULLUP ant ZeroDetection'o | 
			 
		  | 
	 
	
		| 
		 | 
	 
	  | 
 
 
 | 
 
 
	  |  
 
	  |  
 
	  | 
	 Arduino "plaukioja" | 
 
  
	
	
		 Parašytas: 2019 11 07, 18:03 | 
		        | 
	   | 
 
	
	
	
		| 
		
		 | 
		
			
			
				Siaip, atmega turi gera finta, jei rasai i PINx kazka, tai kur irasai 1, ten invertuojasi, todel vietoje PORTx = outx; gali rasyti PINx = outx; o du kart invertavus gausis anksciau buvusi reiksme.
 
masyve vienetukus isstatineji tik tuose bituose kurie valdo, kitus praleidi ir nieko nebus, net jei tie pinai naudojami kitoms f-joms.
 
Arba masyve apsirasai savo loginius bitus be tarpu, o pries priskiriant reiksmes susidelioji kaip reikia. pvz:
 
 
	  | Kodas: | 
	 
	
	  
 
#define greitis 100 // pauze 1/100-siomis
 
 
#include <avr/io.h>
 
#include <avr/interrupts.h>
 
#include <avr/progmem.h>
 
#include <utils/delay.h>
 
 
const uint8_t EFEKTAI[] PROGMEM = (
 
    fedcba98   76543210
 
  0b0000000, 0b00000001,
 
  0b0000000, 0b00000010,
 
  0b0000000, 0b00000100,
 
  0b0000000, 0b00001000,
 
  0b0000000, 0b00010000,
 
  0b0000000, 0b00100000
 
// ir taip kol nusibos, paskutineje eiluteje gale nereikia kablio
 
);
 
const uint16_t eLen = sizeof(EFEKTAI);
 
 
volatile register uint8_t out0 asm("r2") = 0;
 
volatile register uint8_t out1 asm("r3") = 0;
 
volatile register uint8_t out2 asm("r4") = 0;
 
volatile register uint8_t sync asm("r5") = 0;
 
 
static uint16_t index = 0;
 
static uint16_t cnt = 0; // greicio skaitliukas
 
 
void update() {
 
  if ( eLen <= index ) index = 0;
 
  uint16_t t = pgm_read_word( index );
 
  index += 2; // nuskaitem 2 baitus
 
  uint8_t p0 = 0, p1 = 0, p2 = 0;
 
  p0 = ( 0b0000000000111111 & t ) << 2;  // PD7..PD2
 
  p1 = ( 0b0000011111000000 & t ) >> 6;  // PB4..PB0
 
  p2 = ( 0b1111100000000000 & t ) >> 10; // PC5..PC1
 
  // PC0 lieka kaip iejimas Zero Deteksinui PCINT8
 
  out0 = p0;
 
  out1 = p1;
 
  out2 = p2;
 
}
 
 
ISR ( PCINT1_vect ) {
 
  _delay_us( 100 );
 
  PIND = out0;  PINB = out1;  PINC = out2;
 
  _delay_ms( 5 );
 
  PIND = out0;  PINB = out1;  PINC = out2;
 
  sync = 1;
 
  PCIFR = _BV( PCIE1 );
 
}
 
 
void setup() {
 
  ACSR  = _BV( ACD );
 
  ADCSRA = 0;
 
  DIDR0 = 0;
 
//  pinMode( A0, INPUT ); // ZeroDetection
 
  PORTD |= 0b11111100; // PD7..PD2  valdymas 0
 
  DDRD  |= 0b11111100;
 
  PORTB |= 0b00011111; // PB4..PB0
 
  DDRD  |= 0b00011111;
 
  PORTC  = 0b00111110; // PC5..PC1
 
  DDRC   = 0b00111110;
 
  update();
 
  PCIMSK1 = _BV( PCINT8 );
 
  PCICR = _BV( PCIE1 );
 
  PCIFR = _BV( PCIF1 );
 
  sei();
 
  // cia gali buti jusu kodas
 
}
 
 
void loop() {
 
  if ( sync ) {
 
    if ( greitis <= ++cnt ) {
 
      cnt = 0;
 
      update();
 
    }
 
    sync = 0;
 
  }
 
}
 
 | 
	 
 
 
PIN13 lieka laisvas LED'ui kazka pamirkseti
 
PIN0..1 lieka laisvi Serial komunikacijai
 
A0 kaip iejimas Zero Deteksinui
 
jei keiksis del r2..r4, tai perkelk i r16, r17, r18
 
 
SCR modulius maitink per papildoma chriena, nes tas maziukas perkais nuo perkrovos. | 
			 
		  | 
	 
	
		| 
		 | 
	 
	  | 
 
 
 | 
 
 
	  |  
 
	  | 
	 Arduino "plaukioja" | 
 
  
	
	
		 Parašytas: 2019 11 09, 16:49 | 
		        | 
	   | 
 
	
	
	
		| 
		
		 | 
		
			
			
				| Nesuprantu, kam tokiam "sudėtingam" dalykui Arduino? Negi paprasčiausio multivibratoriaus neužtenka? Nereikės nei sinchronizuoti su tinklu, nei ką... | 
			 
		  | 
	 
	
		| 
		 | 
	 
	  | 
 
 
 | 
 
 
	  | 
	 Arduino "plaukioja" | 
 
  
	
	
		 Parašytas: 2019 11 21, 16:56 | 
		        | 
	   | 
 
	
	
	
		| 
		
		 | 
		
			
			
				
 
	  | hencia rašo: | 
	 
	
	  | Nesuprantu, kam tokiam "sudėtingam" dalykui Arduino? Negi paprasčiausio multivibratoriaus neužtenka? Nereikės nei sinchronizuoti su tinklu, nei ką... | 
	 
 
 
visiskai niekas nesikeicia ar arduino ar multivibratorius, beda islieka nes tarp lempu ir arduino stovi simistorius | 
			 
		  | 
	 
	
		| 
		 | 
	 
	  | 
 
 
 | 
 
 
	  |  
 
	  | 
	 Arduino "plaukioja" | 
 
  
	
	
		 Parašytas: 2019 11 21, 17:15 | 
		        | 
	   | 
 
	
	
	
		| 
		
		 | 
		
			
			
				Kadangi projektas nepigus gavosi, tai priemem sprendimą visas 34 lempas valdyti atskirai. Principas toks: Bus pastatyti du judesio davikliai (fasado plotis 6m, tai davikliai du tam kad lengvai suveiktu priėjus is betkokios puses ).
 
Kol žmogaus nėra, lempos užsidegineja pagal nustatytą programą, o prięjus žmogui, užsidega nustatytas lempu skaicius, niekas nebeblyks. Žmogaus nueina, judesio daviklis nebefiksuoja judesio ir po kokiu 30s mirksėjimo programos pasileidžia iš naujo.
 
 
Minėjau tikriausiai kad nesu stebūklas arduino prgramavime, taigi taupant laiką prašymas/klausimas būtų, ar kas galėtų suprogramuot arduino su mano išdėstita mintim ir šiais efektais.... žiūrėti nuo 6:16
 
 
www.youtube.com/watch?v=aNSTsFWWP_s&t=185s
 
 
skolingas neliksiu     
 
jei ka ir per privata galim susibendraut | 
			 
		  | 
	 
	
		
		
		
			
  Paskutinį kartą redagavo Enshteinas, 2019 11 21, 17:24. Redaguota 1 kartą | 
		 
		  | 
	 
	  | 
 
 
 | 
 
 
	  |  
 
	  | 
	 Arduino "plaukioja" | 
 
  
	
	
		 Parašytas: 2019 11 21, 18:20 | 
		        | 
	   | 
 
	
	
	
		| 
		
		 | 
		
			
			
				
 
 
Cia tikrai bus tokios begancios eilutes kaip Vegas'e 1980'taisiais ar kaip kokiam china town'e? | 
			 
		  | 
	 
	
		| 
		 | 
	 
	  | 
 
 
 | 
 
 
		 | 
		
			
				
					  | 
					 Google paieška forume | 
				 
				
					| 
 | 
				 
			 
			
				
					  | 
					 Naujos temos forume | 
				 
				
					 | 
				 
			  
	
		  | 
	    
	    	FS25 Tractors 
	    	Farming Simulator 25 Mods,
	    	FS25 Maps,
			FS25 Trucks | 
	 
	
		  | 
	    
	    	ETS2 Mods 
	    	ETS2 Trucks,
			ETS2 Bus,
			Euro Truck Simulator 2 Mods
			 | 
	 
	
		  | 
	        
	    	FS22 Tractors 
	    	Farming Simulator 22 Mods,
	    	FS22 Maps,
		FS25 Mods | 
	 
	
	  | 
	    
	    	VAT calculator 
	    	VAT number check,
	    	What is VAT,
	    	How much is VAT | 
	 
	
	  | 
	    
	    	Dantų protezavimas 
	    	All on 4 implantai, 
		Endodontija mikroskopu, 
		Dantų implantacija | 
	 
	
	  | 
	    
	    	FS25 Mods 
	    	FS25 Maps,
		FS25 Cheats,
		FS25 Install Mods | 
	 
	
	  | 
	    
	    	FS25 Mods 
	    	Farming Simulator 25 Mods, 
	    	FS25 Maps | 
	 
	
	  | 
	    
	    	ATS Trailers 
	    	American Truck Simulator Mods,
		ATS Trucks,
		ATS Maps | 
	 
 
 
		 | 
	 
 
			
			 
 
 
  | 
		  |