Sari la conținut
ELFORUM - Forumul electronistilor

va_cristi

Membru
  • Număr conținut

    19
  • Înregistrat

  • Ultima Vizită

Profile Fields

  • Locatie
    Buhusi

Vizitatori Recenți Profil

213 citiri profil

va_cristi's Achievements

Explorer

Explorer (4/14)

  • Conversation Starter
  • One Year In
  • Collaborator
  • Dedicated
  • First Post

Recent Badges

  1. Cel mai bine este sa folosesti functia " update() ".
  2. Placile nu au costat mult! Dar probabil nu am stiut eu ce sa selectez pt a plati un pret mai mic pe transport.
  3. Salut! Te rog mult sa imi spui ce ai selectat de ai ajuns la acest pret de 4.16$. Eu pe 10 placute de 100x100mm am dat cam 140Lei si au venit in 3 saptamani. M-am grabit in proiectare si am avut o eroare, dar functioneaza totusi: Am cateva proiecte si as vrea sa mai dau comanda, dar la un pret mai rezonabil.
  4. Desigur: A4988 bipolar motor Dar nu cred ca merge pt motorul tau pt ca se alimenteaza la 5Vcc iar tensiunea de lucru pt motoare este cuprinsa intre 8 si 35Vcc.
  5. Salut @Eusebiu05! Acela este un motor bipolar. Daca masori cu un ohmetru bornele vei sti care sunt cele doua bobine si apoi poti sa te folosesti de schema atasata. Tensiunea de lucru a motorului este 5Vcc.
  6. A mers dle. Multumesc frumos! Acuma mai este o problema. Nu incarca in EERPOM-ul extern. O sa incerc cu o librarie dedicata pt EEPROM-urile externe.
  7. Am incercat ambele variante si tot nu functioneaza corespunzator.
  8. Salutare! Am incercat sa incarc in EEPROM-ul extern, symbol.uri cu dimensiunea de 8x8pixeli sau 8x16pixeli si am reusit: #include <Wire.h> #include <EEPROM.h> #include <Adafruit_SSD1306.h> #define OLED_ADDR 0x3C #define EEPROM_ADDR 0x50 Adafruit_SSD1306 display(OLED_ADDR); // byte symbol[8] = {0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09}; byte symbol[16] = {0XFF,0X81,0XC5,0X6E,0X7E,0X3C,0XBC,0X98,0X18,0X24,0X24,0X42,0X52,0XB9,0XFD,0XFF}; void setup() { Wire.begin(); display.begin(SSD1306_SWITCHCAPVCC); display.clearDisplay(); /* //write symbol to EEPROM for (int i = 0; i < 8; i++) { EEPROM.write(i, symbol[i]); } //read symbol from EEPROM for (int i = 0; i < 8; i++) { symbol[i] = EEPROM.read(i); } //display symbol for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if (symbol[i] & (0x01 << j)) { display.drawPixel(i, j, WHITE); } } } */ //write symbol to EEPROM for (int i = 0; i < 16; i++) { EEPROM.write(i, symbol[i]); } delay(2000); //read symbol from EEPROM for (int i = 0; i < 16; i++) { symbol[i] = EEPROM.read(i); } //display symbol for (int i = 0; i < 8; i++) { for (int j = 0; j < 16; j++) { if (symbol[j] & (0x01 << i)) { display.drawPixel(i, j, WHITE); } } } display.display(); } void loop() { //nothing to do here } Dar cand am vrut sa adaug un symbol de 32x32pixeli, nu prea merge imi afiseaza cu totul altceva: pe orizontala 32pixeli, pe verticala doar 16pixeli. #include <Wire.h> #include <EEPROM.h> #include <Adafruit_SSD1306.h> #define OLED_ADDR 0x3C #define EEPROM_ADDR 0x50 // eeprom chip 24LC256 Adafruit_SSD1306 display(OLED_ADDR); // byte symbol[8] = {0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09}; byte symbol[32][4] = { // 32x32pixeli 0X00, 0X0F, 0XF0, 0X00, 0X00, 0X70, 0X0E, 0X00, 0X01, 0X80, 0X03, 0X80, 0X03, 0X07, 0XF8, 0XC0, 0X04, 0X06, 0X0E, 0X20, 0X08, 0X01, 0X81, 0X10, 0X10, 0X07, 0X81, 0X88, 0X30, 0X08, 0X00, 0X8C, 0X24, 0X18, 0X00, 0X44, 0X4C, 0XF0, 0X00, 0X46, 0X54, 0XC0, 0X00, 0X42, 0X54, 0X20, 0X00, 0X42, 0X93, 0X10, 0X00, 0X41, 0X91, 0X98, 0X00, 0X41, 0X90, 0X8F, 0X00, 0X21, 0X90, 0X60, 0X80, 0X19, 0X80, 0X20, 0X60, 0X01, 0X80, 0X20, 0X38, 0X01, 0X80, 0X40, 0X0E, 0X01, 0X80, 0X20, 0X02, 0X03, 0X40, 0X20, 0X04, 0X02, 0X40, 0X18, 0X04, 0X02, 0X60, 0X08, 0X08, 0X06, 0X20, 0X04, 0X18, 0X04, 0X30, 0X04, 0X60, 0X08, 0X10, 0X0D, 0X80, 0X18, 0X08, 0X09, 0X00, 0X10, 0X04, 0X06, 0X00, 0X60, 0X03, 0X06, 0X00, 0XC0, 0X01, 0XC0, 0X03, 0X00, 0X00, 0X78, 0X1E, 0X00, 0X00, 0X0F, 0XF0, 0X00, }; void setup() { Wire.begin(); display.begin(SSD1306_SWITCHCAPVCC); display.clearDisplay(); delay(3000); for (int i = 0; i < 32; i++) { // [32] reprezintă numărul de linii (pixeli pe orizontală) for (int j = 0; j < 4; j++) { // [4] reprezinta numarul de octeti necesari pentru a salva valoarea fiecarui pixel // 32 pixeli necesita 32/8 = 4 octeti EEPROM.write(i * 4 + j, symbol[i][j]); } } for (int i = 0; i < 32; i++) { for (int j = 0; j < 4; j++) { symbol[i][j] = EEPROM.read(i * 4 + j); } } for (int i = 0; i < 32; i++) { for (int j = 0; j < 32; j++) { if (symbol[i / 8][i % 8] & (0x01 << j)) { display.drawPixel(i, j, WHITE); } } } display.display(); } void loop() { //nothing to do here } Stie cineva unde am gresit?
  9. @addysoftware click dreapta Properties:
  10. Singura solutie este cu un microcontroller. De exemplu folosesti o placa arduino uno si apoi scoti microcontrollerul din soclu dupa programare, si ii faci o placuta mai mica. Un exemplu poti gasi si aici: rotary encoder arduino Circuite dedicate nu prea se gasesc, iar cu circuite integrate logice este mai costisitor: piese multe, si gabarit depasit fata de un singur microcontroller. Am incercat si eu demult sa fac asa ceva cand nu stiam sa programez microcontrollere. De exemplu am incercat aceasta schema decoding encoder , dar problema este ca daca encoderul se afla in starea 10 sau 01 la punerea sub tensiune LED-ul D1 este aprins. Am incercat mai multe scheme si la unele se intampla invers, cand encoderul se gasea in starea 11 sau 00, la punerea sub tensiune unul dintre LED-uri este aprins.
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări