» »

Arduino programiranje

Arduino programiranje

cosa nostra ::

Ker sem začetnik v programiranju arduina bi prosil za pomoč.
Delam izdelek tehtnica, ki ima na vsaki strani les v sredini pa senzor za silo imenovan 1kg load cell.
Poveza do slike.

Vse skup imam povezano na arduino in na lcd display z vezanim potenciometrom. Vmes iz tega senzorja vezan še HX711. Nujno bi rabil osnoven program, ki samo na ekran izpiše težo v gramih :D hvala
Slika vezave

cosa nostra ::

Vmes iz tega senzorja vezan še HX711
Slika vezave

smacker ::

cosa nostra ::

Lp.

To je programska koda, ki jo imam trenutno. Edina težava se pojavi, da senzor pri kalibraciji ne zazna da je to naprimer 100g ki smo jih položili na tehtnico ampak preskoči in napiše measured weight 99g. To pomeni da nene uspešno izvedemo kalbracije


#include <HX711.h>

#include <LiquidCrystal.h>
//LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
const int rs = 12, en = 9, d4 = 6, d5 = 10, d6 = 5, d7 = 11;  //določitev na katerih pinih je priključen displej
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //inicializacija displeja


#define DT A0
#define SCK A1
#define sw 8

long sample=0;
float val=0;
long count=0;

unsigned long readCount(void)
{
  unsigned long Count;
  unsigned char i;
  pinMode(DT, OUTPUT);
  digitalWrite(DT,HIGH);
  digitalWrite(SCK,LOW);
  Count=0;
  pinMode(DT, INPUT);
  while(digitalRead(DT));
  for (i=0;i<100;i++)
  {
    digitalWrite(SCK,HIGH);
    Count=Count<<1;
    digitalWrite(SCK,LOW);
    if(digitalRead(DT)) 
    Count++;
  }
  digitalWrite(SCK,HIGH);
  Count=Count^0x800000;
  digitalWrite(SCK,LOW);
  return(Count);
}

void setup()
{
  pinMode(SCK, OUTPUT);
  pinMode(sw, INPUT_PULLUP);
  lcd.begin(16, 2);
  lcd.print("    Weight ");
  lcd.setCursor(0,1);
  lcd.print(" Measurement ");
  delay(1000);
  lcd.clear();
  calibrate();
}

void loop()
{
  count= readCount();
  int w=(((count-sample)/val)-2*((count-sample)/val));
  lcd.setCursor(0,0);
  lcd.print("Measured Weight");
  lcd.setCursor(0,1);
  lcd.print(w);
  lcd.print("g             ");

  if(digitalRead(sw)==0)
  {
    val=0;
    sample=0;
    w=0;
    count=0;
    calibrate();
  }
}

void calibrate()
{
    lcd.clear();
  lcd.print("Calibrating...");
  lcd.setCursor(0,1);
  lcd.print("Please Wait...");
  for(int i=0;i<0;i++)
  {
    count=readCount();
    sample+=count;
  }
  sample/=100;
  lcd.clear();
  lcd.print("Put 100g & wait");
  count=0;
  while(count<1000)
  {
    count=readCount();
    count=sample-count;
  }
  lcd.clear();
  lcd.print("Please Wait....");
  delay(2000);
  for(int i=0;i<100;i++)
  {
    count=readCount();
    val+=sample-count;
  }
  val=val/100.0;
  val=val/100.0;        // put here your calibrating weight
  lcd.clear();
}

Map ::

Imam koračni motor s svojim kontrolerjem, in bi želel, da mu lahko nastavim število obratov in kolikokrat naj ta cikel ponovi. To bi nastavljal z potenciometri ali z gumbi. To niti no problem, to znam. Ne vem pa, kako naj pokažem, kakšne vrednosti so nastavljene?

Najprej mi je na pamet prišel arduino in OLED zaslonček, ampak ne vem, kako bi to spravil skupaj. Kako se ponavadi izvede kaj takega? Rabim torej zamo nek zaslon, ki bi prikazoal vrednosti, vse ostalo bi sprogramiral na kontrolerju od koračnega motorja. Zaslon je lahko OLED ali pa LCD modul.

jamiroq ::

U8G2 library in nek OLED, recimo SH1106 ali SSD1309. Primer za SH1106:

#include <SPI.h>
#include <U8g2lib.h>

#define oledSCL 22
#define oledSDA 21

# SH1106 konstruktor
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, oledSCL, oledSDA);

void setup()
{
  SPI.begin();
  u8g2.begin();
}

void loop()
{
  u8g2.firstPage();
  do {
    u8g2.setFont(u8g2_font_micro_tr);
    u8g2.setCursor(0,5);
    u8g2.print("hello world");
    u8g2.setCursor(0, 15);
    u8g2.print("dlrow olleh");
    yield();
  } while(u8g2.nextPage());
}

Ostali displayi so po istem kopitu, le konstruktor za inicializacijo se razlikuje. Izkušnje s SSD1309 so bolj boge (burn in po kakšnih 15h delovanja, crknil kmalu za tem). Trenutni je sicer ok, vendar ga po 5s izklopim (u8g2.setPowerSave(1)).

Map ::

Kako bi potem to vezal, gumbe hkrati na kontroler in arduinota, kontroler potem opravlja svoje delo, arduino pa samo kaže vrednosti na zaslonu?

jamiroq ::

Morda bi tako celo delalo, ja. Kaj za en kontroler ima ta koračni motor? Brez te informacije je vse skupaj precej teoretično.

Lepše bi bilo, če bi na Arduinu bral vrednosti potenciometra/gumbov in skrbel za prikaz na OLED ter na kontroler pošiljal ukaze preko, npr., serijskega porta. Če ga kontroler ima, seveda.
Ali pa na kontroler, namesto gumbov, zvežeš Arduino pine, ki jih nastaviš na output (in po potrebi uporabiš level shifter, če nista obe ploščici 5V).

Map ::

Do sedaj sem uporabljal LAM kontrolerje: https://www.lamtechnologies.com/Product...

Gledam, da obstajajo neki programi, kjer lahko ustvariš program z bloki, ker mi gre koda bolj slabo, PLC program z bloki mi pa ne dela težav. Super bi bilo, če bi lahko ob določenih signalih diplay pokazal še kak tekst, ampak to mislim da ni problem.

Če obstaja še kaka druga preprostejša/boljša/elegantnejša rešitev, bom vesel predlogov.

jamiroq ::

Če prav vidim ima zadeva RS485/Modbus port in 4 digitalne vhode? Če je tako potem lahko Arduino komunicira s kontrolerjem preko RS485. Interface (gumbe, potenciometre, display) imaš na Arduinu, preko RS485 pošiljaš ukaze kontrolerju in bereš vrednosti - kar pač pošilja nazaj.

Verjetno je opcija tudi, da na Arduinu nastaviš par pinov kot output in jih povežeš na kontrolerjeve DI priključke (kot vidim so od 3 do 28VDC in optoizolirani) in simuliraš gumbe. Ali pa kontroliraš (opto)releje, ki sklenejo, npr., DI0+ in DI0-. Kaj narediti s potenciometrom je drugo vprašanje. Kako dobiti kakšno povratno informacijo iz kontrolerja še bolj :).

Osebno bi se lotil RS485...

Map ::

DS3044 ga nima, ima pa res štiri digitalne vhode.

Hja, dejansko zelo preprosta zadeva, če imaš pravi hardware, ampak imam premalo pojma, da bi vedel, kaj bi bilo najbolj primerno.

techfreak :) ::

Recimo mBlock podpira programiranje Arduina z bloki: https://www.mblock.cc/en-us/blog/mblock... Mogoce lahko kaj taksnega pogledas. Imajo tudi neke bloke za LCD zaslone.

Gumbe in potenciometer bi lahko verjetno brez problema skupaj spravil z mBlock, domnevno tudi LCD, vprasanje je pa kako podatke spraviti naprej do kontrolerja.

branelazic33 ::

Pozdravljeni,
Ali se še kdo ukvarja z Arduino programom?
Jaz bi potreboval inštrukcije, katere sem pripravljen plačati.
Po 20letih sem se ponovno vpisal v šolo in na žalost je izobraževanje brez predavanj, pač šola nima predavanj in je samoizobraževanje.
Za nalogo imam:
izberete Arduino. Z raziskovanjem je potrebno ustvariti nekaj vrstični program, ki zadovoljivo deluje. Recimo programiranje semaforja / križišča, ali vstopno programiranje - vrata / ključavnica + alarm,...


Iskreno pojma nimam o čem se gre.

Ali je kdo pripravljen pomagati?
Hvala
LP, Brane

c3p0 ::

Če bi to bilo leto 1995, bi te še nekako razumel. Dandanes pa imaš video vodičev dobesedno milijone, kaj šele AI, ki ti dobesedno napiše poljuben program.

DamijanD ::

brane a imaš sploh karkoli izkušenj s programiranjem?

feryz ::

Šola nima predavanj ampak samoizobraževanje?
Upam da je vsaj zastonj, če že popolnoma nič nima.

Blinder ::

Kaksen trik, kako se poveze. Kaksna izkusnja, ali je breadboard potrebna. Kaksna informacija, kaj lahko priklopi na arduino, da ne bo crknil zaradi prevelike obremenitve. Kaksna informacija, kaj se zgodi, ce bo nehote naredil kratek stik z zickami. Se nabere vprasanj za katere ni odgovorov v tutorialckih.
99.991% of over-25 population has tried kissing.
If you're one of the 0.009% who hasn't, copy & paste this in your Signature.
Intel i3-12100f gtx 3050 Pismo smo stari v bozjo mater. Recesija generacija

Invictus ::

Greš na udemy.com

najdeš arduino tečaje

plačaš 10-20 EUR in akcija
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Arduino koda pomoč.

Oddelek: Programiranje
5741 (618) igi82m
»

Arduino žaluzije

Oddelek: Programiranje
142428 (1625) TheBlueOne
»

Arduino kot časovni rele

Oddelek: Pomoč in nasveti
81605 (1191) davor92
»

Arduino in luči (strani: 1 2 )

Oddelek: Elektrotehnika in elektronika
9812058 (9684) FX6300B
»

Arduino "leteče luči"

Oddelek: Elektrotehnika in elektronika
132996 (1873) zrataj4201

Več podobnih tem