LAKI PINGVINI Ili tamo ili ’vamo
Kada smo počeli ovu našu seriju tekstova o integralnim kolima, nismo imali detaljan plan koliko će ih biti. Vremenom su se čipovi nizali kao na traci i opisali smo ih popriličan broj. Ovoj seriji se bliži kraj, barem što se tiče pisanja iz broja u broj - biće ih i dalje, ali povremeno. Čip iz naslova je multiplekser/demultiplekser (mux/demux). O sličnim čipovima smo već više puta pisali. Ovaj ima određene specifičnosti i smatramo da može naći primenu u mnogim projektima. 74HC4051 ima osam analognih IO pinova i tri digitalna ulaza - dovoljno da reši mnoge probleme kod mikrokontrolera koji su relativno siromašni njima. Ko je pomenuo ESP seriju? Čip radi sa naponima od minus pet do plus pet volti. S obzirom na raspon napona, čip sadrži prevođenje logike, koja omogućava rad sa različitim naponima. Naš primerak dolazi u DIP16 pakovanju, što je danas retkost. Na tržištu se danas mogu naći SSOP16 i DHVQFN16 pakovanja, koja su mnogo praktičnija, ali ne i za prototipske ploče. Čip ima dva pina napajanja: VCC i VEE. Prvi koristimo ako čip napajamo sa pozitivnim naponom, dok se drugi koristi ako ga napajamo negativnim. GND je zajednički. Ako nećemo da čip koristimo sa bipolarnim napajanjem, već samo sa pozitivnim, VEE povezujemo sa GND. Dovođenjem logičke nule na E pin uključujemo čip. Pinovi S0-2 su Select ulazi, gde je S0 lsb, a S2 msb. Pinovi A0-7 su nezavisni IO, a A COM je zajednički OI, što zavisi od vrste projekta. Sa Arduinom čip povezujemo na sledeći način: Na GND povezujemo GND i VEE da bismo isključili negativnu logiku. E(nable), takođe, ide na GND. VDD ide na pet volti, a jedan kondenzator od 100 nanofarada preko naponskih linija neće škoditi. Pin A COM (OI) ide na analogni pin Arduina. Pinove S0-2 povezujemo na digitalne 2, 3 i 4. Ovi digitalni S pinovi služe za odabir A IO pinova. U dokumentaciji postoji tabela koja nam jasno kaže kojom kombinacijom logičkih stanja na ovim pinovima upravljamo određenim IO pinom. Tako, ako ispišemo LOW na sva tri S pina, uz E takođe na LOW, pristupamo pinu A0, a podrazumeva se da je sa njim povezan senzor (ili šta već) na zajednički A COM. Ako ispišemo na sva tri S pina HIGH, tada pristupamo A7. U našem primeru imamo jedan potenciometar u ulaznoj konfiguraciji, a tu je i Wemos D1 Mini. Povezivanje je prema šemi. Sa GND povezujemo sve A pinove koje ne koristimo, E pin, kao i VEE i GND. VCC ide na 5 volti. Digitalne ulazne pinove S0-2 povezujemo sa D3-1, a A COM na analogni pin našeg Wemosa. A0 smo povezali na brisač potenciometra. Sparkfun ima odličan primer za očitavanje vrednosti svih ulaza u loopu. Prenosimo ga u celosti: const int selectPins[3] = {D3, D2, D1}; const int analogInput = A0; void setup() { Serial.begin(9600); // Set up the select pins as outputs: for (int i=0; i < 3; i++){ pinMode(selectPins[i], OUTPUT); digitalWrite(selectPins[i], HIGH); } Serial.println(); // Create header table Serial.println("Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7"); Serial.println("--- --- --- --- --- --- --- ---"); } void loop() { // Loop through all eight pins. for (byte pin=0; pin <= 7; pin++) { for (int i=0; i < 3; i++) { digitalWrite(selectPins[i], pin & (1 << i)?HIGH:LOW); } int inputValue = analogRead(analogInput); Serial.print(String(inputValue) + " "); } Serial.println(); delay(1000); } Imamo malo konfuznu logiku koja, zapravo, menja stanja na svim digitalnim ulazima našeg čipa. Na taj način dolazimo do pristupa svakom analognom IO i očitavamo vrednosti. Ono što možete videti na serijskom terminalu je posledica povezivanja žicama. Analogni signal ne trpi loše kontakte, a mi smo na svim IO koji su povezani sa GND imali vrednosti veće od 0. I potenciometar je imao blaga odstupanja. Ovo, naravno, ne bi smelo da se dešava kod kvalitetnih spojeva, zalemljenih na ploči. Srazmeru uzroka navedenog problema možete videti u masi žica od kojih se 74HC4051 ni ne vidi (verujte nam na reč: tu je). Ako je opcija analogni izlaz, možemo to posmatrati kroz prizmu PWM, o čemu je bilo reči na ovim stranicama. Povezivanje ide malo drugačije, u smislu da za slanje podataka sa mikrokontrolera ka čipu koristimo neki digitalni GPIO, recimo, D4. Tada na A0-7 možemo povezati LED, pa dalje preko otpornika na GND. Ispisivanjem određene PWM na u našem slučaju D4, imaćemo tu vrednost i na nekom od A pinova, a koje odaberemo kroz S0-2. Skeč ispod će uključivati LEDice određenom jačinom i takođe je preuzet sa stranica Sparkfuna. const int selectPins[3] = {D3, D2, D1}; // S0~2, S1~3, S2~4 const int aOutput = D4; const int LED_ON_TIME = 500; // Each LED is on 0.5s const int DELAY_TIME = ((float)LED_ON_TIME/512.0) * 1000; void setup() { for (int i=0; i<3; i++){ pinMode(selectPins[i], OUTPUT); digitalWrite(selectPins[i], LOW); } pinMode(aOutput, OUTPUT); } void loop() { for (int pin=0; pin<=7; pin++) { selectMuxPin(pin); for (int intensity=0; intensity<=255; intensity++){ analogWrite(aOutput, intensity); delayMicroseconds(DELAY_TIME); } for (int intensity=255; intensity>=0; intensity--){ analogWrite(aOutput, intensity); delayMicroseconds(DELAY_TIME); } } for (int pin=6; pin>=1; pin--){ selectMuxPin(pin); for (int intensity=0; intensity<=255; intensity++){ analogWrite(aOutput, intensity); delayMicroseconds(DELAY_TIME); } for (int intensity=255; intensity>=0; intensity--){ analogWrite(aOutput, intensity); delayMicroseconds(DELAY_TIME); } } } void selectMuxPin(byte pin){ if (pin > 7) return; // Exit if pin is out of scope for (int i=0; i<3; i++) { if (pin & (1<<i)) digitalWrite(selectPins[i], HIGH); else digitalWrite(selectPins[i], LOW); } } Nažalost, ovaj čip ne možemo da koristimo kao, recimo, PCF8591 (SK 12/2019, i.sk.rs/27541) gde smo mogli da radimo i sa ulazima i sa izlazima istovremeno. Možemo da koristimo drugi čip, ali uz povećanje broja zauzetih GPIO na mikrokontroleru.
|
||||||||||
Najčitanije
Igre
Telefoni
Hardver
Softver
Nauka
Helldivers 2 Ako ste fan timskih pucačina, a pogotovo „Starship Troopersa”, ova igra se ne propušta... Nvidia GeForce RTX 4080 Super Super (ni)je super Sledi osveženje cele GeForce serije sa modelima sa sufiksom "Super". Probali smo dve RTX 4080 karte iz Gigabytea i Asusa i utvrdili da li su stvarno ... Asus Zenbook Duo (2024) UX8406MA Ovde je da ostane? Ovo je model koji napokon potpuno opravdava sufiks „Duo”, jer i bukvalno ima dva (cela) ekrana! Priform Recuva 1.53 • UndeleteMyFiles Pro 3.1 • MyRecover 3.6 • EaseUS Data Recovery Wizard 17.0 • Stellar Data Recovery 11.0 • Wise Data Recovery 6.1.6 Besplatni programi za povraćaj podataka Predstavljamo šest najboljih alata... Honor Magic V2 Što tanje , to bolje Honor Magic V2 ostaće upamćen kao malo inženjersko čudo, prekretnica u dizajnu preklopnih telefona... Samsung Galaxy S24 Bratić Simon Osim dimenzija, ekranske rezolucije i kapaciteta baterije, uređaj je, praktično, istovetan modelu Galaxy S24+... .rs: eSanduče za firme • Cell Broadcast za uzbunjivanje • počinje registracija pripejda Svakome po eSanduče Novim Zakonom o elektronskim komunikacijama propisano je da pripejd korisnici mobilne telefonije moraju da se registruju... Sadašnjost i budućnost kompanije Qualcomm Između proseka i nebesa Qualcomm je pre oko pet godina bio vrednija kompanija od Nvidie, dok danas vredi nešto manje od desetine vrednosti konkurenta... Misije, programi i tehnologije koje ćemo pratiti tokom 2024. godine Svemir, avioni i AI Već brojnim aktivnim misijama za istraživanje kosmosa, ove godine se pridružuje niz novih, zanimljivih projekata... Čipovi su začin U toku je velika migracija tehnologije i ljudi sa Tajvana u Japan, što se, naravno, ne dešava slučajno Palworld Simulacija preživljavanja, craftovanja i manipulacije živuljkama, koju iz milošte definišu kao „Pokémon with guns”... |
||||||||||