Orodha ya maudhui:

Tagi ya Bei ya Nguvu bandia: Hatua 6 (na Picha)
Tagi ya Bei ya Nguvu bandia: Hatua 6 (na Picha)

Video: Tagi ya Bei ya Nguvu bandia: Hatua 6 (na Picha)

Video: Tagi ya Bei ya Nguvu bandia: Hatua 6 (na Picha)
Video: 28 панфиловцев. Самая полная версия. Panfilov's 28 Men (English subtitles) 2024, Novemba
Anonim
Image
Image
Waya Up maonyesho
Waya Up maonyesho

Bei za Amazon hubadilika kila wakati. Ukiacha vitu kwenye gari lako la ununuzi kwa muda mrefu zaidi ya masaa machache, labda utapewa tahadhari juu ya kushuka kwa thamani ya dakika - $ 0.10 hapa, $ 2.04 hapo. Amazon na wafanyabiashara wake ni wazi wanatumia aina fulani ya bei ya algorithm kufinya senti ya mwisho kutoka kwa soko.

Hiyo yote inatarajiwa (ubepari wa marehemu na yote hayo). Lakini ni nini hufanyika ikiwa mambo yataharibika? Mnamo mwaka wa 2011, vita vya bei vilizuka kati ya algorithms mbili zinazoshindana. Matokeo: kitabu juu ya mzunguko wa maisha wa nzi wa nyumbani (bila kuchapishwa, lakini sio nadra sana) kiliongezeka kwa bei ya $ 23.6 milioni.

Upataji wa hivi karibuni wa Soko la Chakula la Amazon ulitufanya tujiulize: ni nini kinazuia bei ya nguvu kuingia katika ulimwengu wa rejareja? Je! Ikiwa bei katika duka kubwa zinaweza kubadilika kama zile za mkondoni?

Kwa hivyo, katika Agizo hili, tutaunda onyesho la bei kali na Arduino na LCD ndogo. Tutazungumza pia kwa ufupi juu ya kujificha na kuiweka dukani.

(Na, ikiwa una nia, programu-jalizi hii ya Chrome inaweza kukuonyesha historia ya bei ya bidhaa yoyote kwenye Amazon kwa siku 120 zilizopita.)

Nyenzo Inayohitajika

Hapa ndio tulikuwa tukitumia kujenga mradi huu:

  • Arduino Uno R3
  • Onyesho la kawaida la 16x2 LCD. Tulitumia hii kutoka Adafruit, lakini maadamu inaendana na maktaba ya LiquidCrystal, unapaswa kuwa mzuri. Utahitaji vitu kadhaa kuiweka waya hadi Arduino:

    • nyaya zingine za kuruka
    • kinzani cha 220 ohm
    • potentiometer ya 10k ohm (Hii ni kwa kudhibiti tofauti ya onyesho. Ukipata tofauti unayopenda, unaweza kuchukua nafasi ya potentiometer na kipinga cha kudumu.)
  • Baadhi ya akriliki kwa sanduku. Tulitumia akriliki nyeusi ya matte nyeusi, kukata laser na kukusanyika na wambiso wa kutengenezea-akriliki na gundi moto.
  • Sumaku na / au ndoano ya kuweka rafu kwenye sanduku kwenye duka. Ukienda kwenye njia ya kulabu, unaweza kupima na kuchapisha moja kwa moja, au jaribu kutafuta moja mkondoni (Alibaba, labda?), Au… ipate kwa njia nyingine, mbaya zaidi. Kuwa salama.

Kwanza, wacha tufanye maonyesho yaende!

Hatua ya 1: Funga waya kwenye Uonyesho

Waya Up maonyesho
Waya Up maonyesho
Waya Up maonyesho
Waya Up maonyesho

Kuna hakika kuna pini nyingi nyuma ya LCD hiyo. Kwa bahati nzuri, nyaraka za maktaba ya programu tutakayotumia ina mwongozo mzuri wa kuifunga. Angalia.

Kwa muhtasari, wiring yako inapaswa kuishia kama hii:

  • Nguvu:

    • LCD GND (pini 1) → Arduino GND
    • LCD VDD (pini 2) → Arduino + 5V
    • LCD RW (pini 5) → Arduino GND
  • Vitu vya data:

    • LCD RS (pini 4) → Pini ya dijiti ya Arduino 12
    • Wezesha LCD (pini 6) → Pini ya dijiti ya Arduino 11
    • LCD D4 (pini 11) → pini ya dijiti 5
    • LCD D5 (pini 12) → pini ya dijiti 4
    • LCD D6 (pini 13) → pini ya dijiti 3
    • LCD D7 (pini 14) → pini ya dijiti 2
  • Onyesha tofauti:

    • Wiring miguu ya potentiometer ya 10k kwa Arduino's + 5V na GND
    • Pato la Potentiometer → LCD VO (pini 3).
  • Mwangaza wa nyuma:

    • LCD BL1 (pini 15) → 220 ohm resistor → Arduino + 5V
    • LCD BL2 (pini 16) → Arduino GND

Wakati hiyo yote imewekwa, pakia moja ya mfano LiquidCrystal miradi katika Arduino IDE na uone ikiwa inafanya kazi! Kumbuka kuangalia mara mbili nambari ya uanzishaji ya LCD kwenye sampuli - nambari za siri zinahitaji kuwa sahihi au hautaona chochote.

Kwa mfano, mfano wa "Blink" una nambari hii, ambayo ni sahihi kutokana na usanidi hapo juu:

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

Vidokezo

  • Jiwekee kuuza na kuwekeza katika miisho kadhaa ya crimp na viunganisho vya kichwa. Kwenye miradi kama hii ambapo tutasonga umeme kwa kesi ndogo, kuweza kutengeneza kebo fupi za kuruka inasaidia sana.
  • Vivyo hivyo, neli ya kunywa joto ni muhimu sana kuhakikisha kuwa hakuna fupi fupi wakati yote imeshinikizwa dhidi yake.
  • Kwa kuwa kuna vitu vingi kwenda kwa GND na + 5V, tulichagua kutengeneza kebo ya wazi (tazama picha hapo juu) iwe sawa kama inavyowezekana. Ikiwa nafasi ingekuwa chini ya suala, ubao wa mkate au protoshield ingekuwa chaguo rahisi.
  • Potentiometers zingine zina umbo la kushangaza. Kwa ujumla, risasi ya kushoto hutumiwa kama ardhi, risasi ya kulia kama nguvu, na ya kati kama pato. Ikiwa yako ina risasi mbili mbele na moja nyuma, moja nyuma ndio pato.

Gotchas

  • Ikiwa hautaona chochote kwenye LCD yako, jaribu kugeuza potentiometer njia yote kwa mwelekeo mmoja, halafu nyingine. Kwa tofauti yake ya chini kabisa, yaliyomo kwenye LCD hayaonekani kabisa.
  • Ikiwa unaona gibberish ya kushangaza kwenye LCD, au laini moja tu badala ya mbili, hakikisha miunganisho yako yote iko salama. Tulikuwa na muunganisho mbovu ardhini na ilikuwa ikisababisha maswala ya kuonyesha ya kushangaza zaidi.
  • Nambari ya kuanzisha LCD (ambayo inaendeshwa na lcd.init () katika usanidi () kazi) ni muhimu na inachukua muda. Ikiwa kuna kitu kibaya na onyesho lako na unashuku waya mbaya, usitarajie vitu vya kutatanisha kuifanya ifanye kazi ghafla. Unaweza kuhitaji kuweka upya Arduino ili msimbo wa uanzishaji uwe na nafasi ya kukimbia vizuri.
  • Hakikisha waya zako ni fupi sana, lakini sio fupi sana. Hakuna kitu kibaya zaidi kuliko kulazimika kuuza tena kwa sababu uko sentimita chache kutoka kwa kichwa.

Kubwa! Sasa wacha tuionyeshe vitu vya kupendeza.

Hatua ya 2: Kanuni: Misingi

Kanuni: Misingi
Kanuni: Misingi
Kanuni: Misingi
Kanuni: Misingi

Vitu vya kwanza kwanza: wacha tuwe na onyesho la onyesho "Bei ya Sasa:" kwenye mstari wa juu, na bei ya nasibu katika anuwai fulani kwa pili. Kila mara, wacha tuwe na bei mpya. Hii ni rahisi sana, lakini itaangazia utumiaji wa kimsingi wa maktaba ya LiquidCrystal na zingine za quirks zake.

Kwanza, wacha tuvute kwenye maktaba na tufafanue vizuizi vingine:

# pamoja

const uint8_t lcdWidth = 16;

const uint8_t lcdHeight = 2;

const min minBeiInCents = 50;

muda mrefu maxPriceInCents = 1999;

const isiyosainiwa kwa muda mrefu minMillisBetweenPriceUpdates = 0.25 * 1000;

const unsigned muda mrefu maxMillisBetweenPriceUpdates = 2 * 1000

Kubwa! Hizo ni vigezo vya anuwai ya bei na ni mara ngapi itaburudisha. Sasa wacha tufanye mfano wa darasa la LCD lililotolewa na maktaba na tuianzishe. Tutachapisha kitu nje juu ya kiweko cha serial, ili tu kuwa na hakikisho kwamba mambo yanafanya kazi, hata ikiwa hatuoni chochote kwenye LCD. Tutafanya hivyo katika usanidi () kazi, ambayo huendesha mara moja baada ya buti za Arduino. Kumbuka, hata hivyo, kwamba tunatangaza kutofautisha kwa LCD nje ya usanidi (), kwa sababu tunataka kuifikia wakati wote wa programu.

LiquidCrystal LCD (12, 11, 5, 4, 3, 2); kuanzisha batili () {Serial.begin (9600); lcd kuanza (lcdWidth, lcdHeight);

Serial.println ("LCD imeanzishwa");

lcd.print ("Bei ya Sasa:");

}

Na kwa nyama, tutatumia kazi iliyojengwa kwa bahati nasibu () na kianzishi cha String () kujenga bei ya desimali. random () hutengeneza nambari tu, kwa hivyo tutagawanya matokeo yake kwa 100.0 kupata thamani ya uhakika. Tutafanya hivyo kwa kitanzi (), kwa hivyo hufanyika mara nyingi iwezekanavyo, lakini kwa ucheleweshaji wa kawaida kati ya viti tulivyoelezea hapo awali.

kitanzi batili ()

{bei mbili = bila mpangilio (minPriceInCents, maxPriceInCents) / 100.0; Kamba prettyPrice = "$" + Kamba (bei, 2); lcd.setCursor (0, 1); lcd.print (Bei nzuri); ucheleweshaji (bila mpangilio (minMillisBetweenPriceUpdates, maxMillisBetweenPriceUpdates)); }

Jambo moja la kumbuka ni simu kwa lcd.setCursor (). Maktaba ya LiquidCrystal haitoi maandishi yako kiatomati kwenye mstari unaofuata baada ya kuchapishwa, kwa hivyo tunahitaji kusonga kielekezi (kisichoonekana) kwa laini ya pili (hapa 1 - ni msingi wa sifuri). Pia kumbuka kuwa hatukuhitaji kuchapisha "Bei ya Sasa:" tena; LCD haijafutwa isipokuwa ufanye hivyo kwa mikono, kwa hivyo tunalazimika kusasisha maandishi yenye nguvu.

Ipe kukimbia na utaona haraka shida inayohusiana. Ikiwa bei ilikuwa, sema, "$ 14.99" halafu "$ 7.22", onyesho litaonyesha "$ 7.229". Kumbuka, onyesho halijionyeshi isipokuwa ukiiambia. Hata ukichapisha kwenye laini moja, maandishi yoyote yaliyopita yale unayochapisha yatabaki. Ili kurekebisha shida hii, lazima tuweke kamba yetu na nafasi ili kuweka tena taka yoyote inayoweza kutokea. Njia rahisi zaidi ya kufanya hivyo ni kuchukua nafasi chache kwa kutofautisha kwa Bei yetu:

Kamba prettyPrice = "$" + Kamba (bei, 2) + "";

Pamoja na mabadiliko hayo mahali, tunayo uthibitisho wa dhana! Wacha tuzungumze kidogo.

Hatua ya 3: Nambari: Wahusika wa kawaida

Nambari: Wahusika wa kawaida
Nambari: Wahusika wa kawaida
Kanuni: Wahusika wa kawaida
Kanuni: Wahusika wa kawaida

Moja ya huduma baridi zaidi ya moduli ya LCD tunayotumia ni uwezo wa kuunda hadi wahusika 8 wa kawaida. Hii imefanywa kupitia njia ya kuundaChar (). Njia hii inachukua safu ya bits 8x5 zinazoelezea ni saizi gani za LCD kuwasha herufi iliyopewa. Kuna zana chache mkondoni kusaidia kutengeneza safu hizi. Nilitumia hii.

Ikiwa haujisikii kiubunifu haswa, ninapendekeza utumie kichujio cha Kizingiti kwenye Photoshop kugeuza picha kuwa nyeusi-na-nyeupe, na kuibadilisha kuwa wahusika. Kumbuka kwamba una kiwango cha juu cha herufi 8, au saizi 64x5.

Nilichagua kutumia wahusika 6 kwa nembo ya mshale wa Amazon, na 2 iliyobaki kwa alama nzuri ya alama ya biashara. Unaweza kufuata mfano wa CustomCharacter katika Arduino IDE ya jinsi ya kutumia API. Hivi ndivyo niliamua kupanga vitu vya kikundi:

// Fafanua data ya wahusika wa Alama ya Biashara

const size_t trademarkCharCount = 2; const uint8_t trademarkChars [trademarkCharCount] [8] = {{B00111, B00010, B00010, B00000, B00000, B00000, B00000, B00000}, {B10100, B11100, B10100, B00000, B00000, 000, B00000}}; uint8_t kwanzaTrademarkCharByte; // Baiti ilitumika kuchapisha tabia hii; kupewa initCustomChars ()

Kisha nikatumia kazi kama hii, inayoitwa kutoka setup (), kuunda herufi:

batili initCustomChars () {

kwanzaTrademarkCharByte = 0; kwa (size_t i = 0; i <trademarkCharCount; i ++) {lcd.createChar (logoCharCount + i, (uint8_t *) alama ya biasharaChars ); }}

Baada ya hapo, kuchapisha wahusika wa kawaida ni rahisi kama kutumia lcd.write () na ka sahihi. Niliandika kazi ya msaidizi kuchapisha kaiti anuwai, na kufafanua alama ya chapa () kwa suala hilo:

batili writeRawByteRange (uint8_t line, uint8_t col, uint8_t startValue, size_t numBytes)

{kwa (uint8_t i = 0; i <numBytes; i ++) {lcd.setCursor (col + i, line); // haja ya kutumia kuandika (), sio kuchapisha () - kuchapa kutageuza nambari kamili ya // kuwa kamba na kuchapisha * hiyo * lcd.write (startValue + i); }} batiliChapa ya biashara (uint8_t line, uint8_t col) {writeRawByteRange (line, col, firstTrademarkCharByte, trademarkCharCount); }

Alama ya mshale wa Amazon ilitibiwa kwa njia sawa. Tazama nambari iliyoambatanishwa kwa maelezo kamili.

Hatua ya 4: Kanuni: miaka ya 80

Ili kufanya mambo iwe rahisi kwangu mwenyewe, niliongeza nambari kadhaa kwenye nambari. Hii ni pamoja na vitu kama: kazi ya kusafisha laini maalum kwa kuibadilisha na nafasi, na kazi ya kuweka kamba iliyopewa kwenye laini.

Nilitaka pia onyesho lizunguke kupitia awamu tatu tofauti:

  1. "Bei ya Nguvu" na nembo hapa chini
  2. "na Amazon" na nembo hapa chini
  3. kuonyesha bei ya nasibu

Kwa hilo, niliunda mfumo rahisi ambao unafuatilia ni muda gani awamu iliyopewa imekuwa ikifanya kazi, na baada ya kipindi fulani, inakwenda kwa inayofuata.

Tazama nambari iliyoambatanishwa kwa maelezo yote mazuri!

Hatua ya 5: Sanduku

Sanduku
Sanduku

Sasa, ili tusipate kikosi cha bomu kilichoitwa kwetu, wacha tutengeneze sanduku zuri kwa jambo lote. Tutafanya hivyo na akriliki iliyokatwa na laser. Kuna zana nyingi mkondoni za kuanza mchakato wa kutengeneza masanduku rahisi. Ninapendekeza makercase.com, kwani hukuruhusu kutaja vipimo vya ndani na akaunti za unene wa nyenzo.

Tulipima betri ya Arduino, LCD na 9V, na kukadiriwa kuwa tungeweza kuitoshea kwenye kesi ambayo ilikuwa 4 "x 2.5" x 2 ". Kwa hivyo, tuliunganisha hizo kwenye makercase, na nene 1/8" nene akriliki. Tulibadilisha PDF iliyosababishwa ili kuongeza dirisha lenye mviringo kwa LCD, na yanayopangwa chini chini kwa lebo ya kuonyesha (zaidi hapo baadaye). Faili inayosababishwa imeambatishwa kama PDF.

Tulitumia wambiso wa akriliki (aina ya sumu ya methyl ethyl ketone) kukusanya pande nne za sanduku. Kisha tuliunganisha jopo la LCD mbele na gundi moto. Mara tu tulipokuwa na kila kitu kinachofanya kazi na kinachofaa, tulifunga pande mbili za mwisho za sanduku na gundi ya moto, ili tuweze kuivunja kwa urahisi baadaye. Kwa kuwa hatukutarajia kifaa hicho kitapata nguo nyingi, tuliacha Arduino na betri bila usalama chini ya kesi hiyo.

Maboresho yanayowezekana

  • Tulipuuza kujenga kwa njia yoyote kuwasha au kuzima kifaa. Ha. Chumba cha kubadili chini au nyuma ya sanduku lingekuwa wazo nzuri.
  • Yanayopangwa chini chini kwa lebo ya kunyongwa inaweza kuwa karibu na mbele ya sanduku, kwa mwonekano ulioboreshwa.

Hatua ya 6: Kuchanganya ndani

Kuchanganya ndani
Kuchanganya ndani
Kuchanganya ndani
Kuchanganya ndani

Na sasa, sehemu ngumu: kuiingiza dukani.

Chapa nzima ya Chakula

Baadhi ya mambo tuliyojifunza katika uhandisi wa kubadili Chakula Chote na chapa ya Amazon:

  • Nakala ya mwili kwa ujumla iko katika Scala Sans
  • Nakala ya kichwa iko katika kitu ambacho kinaonekana kama Brighton - mojawapo ya fonti za kawaida "za joto na za kirafiki"
  • Chakula Kijani Chakula ni kitu karibu na # 223323
  • Shika duka lako la karibu kwa mifano ya vitu vya picha ambavyo hurudia: wanapenda mipaka iliyopigwa, sunbursts, na sanaa rahisi ya vector.

Lebo ya kunyongwa

Tulikata kipande chini ya kesi ya akriliki ili tuweze kushikamana na kitambulisho cha kunyongwa kwenye sanduku, tukielezea kinachoendelea. Angalia PDF iliyoambatishwa kwa mfano. Hii imeundwa kukatwa na kuingizwa kwenye slot; inapaswa kutoshea na kushikilia bila wambiso wowote.

Kuweka rafu

Kwa kweli kuambatisha sanduku kwenye rafu, Chakula Chote hutumia vifaa vya kiwango cha kawaida. Tulichukua vipimo na tukapata ndoano inayoendana katika duka la vifaa. Tuliweka sanduku kwenye ndoano na gundi ya moto.

Ikiwa huwezi kupata ndoano kama hiyo, unaweza kujaribu sumaku - gundi zingine nyuma ya sanduku, na uzipake kwenye rafu.

Tumia

Weka sanduku kwenye ngazi ya macho ili kuvutia umakini wa wapita njia. Usikamatwe! Kila la heri!

Ilipendekeza: