Агуулгын хүснэгт:

Хуурамч динамик үнийн шошго: 6 алхам (зурагтай)
Хуурамч динамик үнийн шошго: 6 алхам (зурагтай)

Видео: Хуурамч динамик үнийн шошго: 6 алхам (зурагтай)

Видео: Хуурамч динамик үнийн шошго: 6 алхам (зурагтай)
Видео: 🎶 ДИМАШ "ОПЕРА 2". История выступления и анализ успеха | Dimash "Opera 2" 2024, Арваннэгдүгээр
Anonim
Image
Image
Дэлгэцийг утсаар холбоно уу
Дэлгэцийг утсаар холбоно уу

Амазоны үнэ байнга өөрчлөгдөж байдаг. Хэрэв та бараагаа сагсанд хэдэн цагаас илүү хугацаагаар орхивол минутын хэлбэлзлийн талаар анхааруулах болно - энд 0.10 доллар, тэнд 2.04 доллар. Амазон болон түүний худалдаачид сүүлийн зоосыг зах зээлээс шахахын тулд ямар нэгэн алгоритмын үнийг ашиглаж байгаа нь ойлгомжтой.

Үүнийг л хүлээх хэрэгтэй (хожмын капитализм ба энэ бүхэн). Гэхдээ бүх зүйл буруугаар эргэвэл яах вэ? 2011 онд өрсөлдөж буй хоёр алгоритмын хооронд үнийн дайн дэгдэв. Үр дүн: Гэрийн ялааны амьдралын мөчлөгийн тухай ном (хэвлэгдээгүй, гэхдээ тийм ч ховор биш) тэнгэрт хадаж 23.6 сая долларын үнэд хүрчээ.

Амазон саяхан Whole Foods Market -ийг худалдаж авсан нь биднийг гайхшруулсан юм: жижиглэнгийн худалдааны ертөнцөд динамик үнийг нэвтрүүлэхэд юу саад болж байна вэ? Хэрэв супермаркетын үнэ онлайнаар байгаа шиг уян хатан байвал яах вэ?

Тиймээс энэхүү зааварчилгаанд бид Arduino болон жижиг LCD дэлгэц бүхий үнийн динамик дэлгэцийг бүтээх болно. Бид үүнийг дэлгүүрт нуун дарагдуулж, суулгах талаар товч ярих болно.

(Хэрэв та сонирхож байгаа бол энэхүү Chrome залгаас нь сүүлийн 120 хоногийн хугацаанд Amazon дээрх аливаа бүтээгдэхүүний үнийн түүхийг харуулах болно.)

Шаардлагатай материал

Энэ төслийг бүтээхэд бидний ашиглаж байсан зүйл энд байна.

  • Arduino Uno R3
  • Стандарт 16x2 хэмжээтэй LCD дэлгэц. Бид үүнийг Adafruit -ээс ашигласан боловч энэ нь LiquidCrystal номын сантай нийцэж байгаа тохиолдолд та сайн байх ёстой. Үүнийг Arduino руу холбохын тулд танд хэдэн зүйл хэрэгтэй болно.

    • зарим холбогч кабель
    • 220 Ом эсэргүүцэл
    • 10 к омын потенциометр (Энэ нь дэлгэцийн тод байдлыг хянахад зориулагдсан болно. Хэрэв танд таалагдах тодосгогч олдвол потенциометрийг тогтмол резистороор сольж болно.)
  • Хайрцагт зориулсан зарим нийлэг. Бид цутгамал царцсан хар нийлэг, лазер хайчилж, нийлэг уусгагч цавуу, халуун цавуугаар угсарсан.
  • Дэлгүүрт байгаа хайрцгийг холбох соронз ба/эсвэл тавиур дэгээ. Хэрэв та дэгээгээр явах юм бол нэгийг нь хэмжиж, 3 хэмжээст хэвлэх, эсвэл онлайнаар хайж олохыг оролдож болно (магадгүй Алибаба?), Эсвэл … өөр муухай аргаар олж авах боломжтой. Аюулгүй байгаарай.

Эхлээд дэлгэцээ ажиллуулцгаая!

Алхам 1: Дэлгэцийг утсаар холбоно уу

Дэлгэцийг утсаар холбоно уу
Дэлгэцийг утсаар холбоно уу
Дэлгэцийг утсаар холбоно уу
Дэлгэцийг утсаар холбоно уу

LCD дэлгэцийн ард маш олон зүү байгаа нь гарцаагүй. Аз болоход, бидний ашиглах програм хангамжийн номын сангийн баримт бичигт үүнийг холбох сайн гарын авлага байна. Үүнийг шалгаж үзээрэй.

Дүгнэж хэлэхэд таны утас дараахь байдлаар дуусах ёстой.

  • Эрчим хүч:

    • LCD GND (зүү 1) → Arduino GND
    • LCD VDD (зүү 2) → Arduino +5V
    • LCD RW (зүү 5) → Arduino GND
  • Өгөгдлийн зүйл:

    • LCD RS (зүү 4) → Arduino дижитал зүү 12
    • LCD идэвхжүүлэх (зүү 6) → Arduino дижитал зүү 11
    • LCD D4 (зүү 11) → дижитал зүү 5
    • LCD D5 (зүү 12) → дижитал зүү 4
    • LCD D6 (зүү 13) → дижитал зүү 3
    • LCD D7 (зүү 14) → дижитал зүү 2
  • Дэлгэцийн тодосгогч:

    • 10 к потенциометрийн хөлийг Arduino +5V ба GND руу холбоно уу
    • Потенциометрийн гаралт → LCD VO (зүү 3).
  • Арын гэрэл:

    • LCD BL1 (зүү 15) → 220 ом эсэргүүцэл → Arduino +5V
    • LCD BL2 (зүү 16) → Arduino GND

Бүх зүйл дууссаны дараа Arduino IDE дээрх LiquidCrystal төслүүдийн нэгийг ачаалж, энэ нь ажиллаж байгаа эсэхийг шалгаарай! Дээж дээрх LCD эхлүүлэх кодыг дахин шалгахаа бүү мартаарай-зүүний дугаар зөв байх ёстой, эс тэгвэл та юу ч харахгүй болно.

Жишээлбэл, "Blink" жишээнд дээрх код байгаа бөгөөд дээрх тохиргоог хийснээр зөв байна:

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

Зөвлөмж

  • Гагнах ажлыг хэмнэж, хавчаарын төгсгөл ба толгой холбогчдод хөрөнгө оруулаарай. Цахилгаан хэрэгслийг жижиг хайрцагт хийх гэж буй ийм төслүүдийн хувьд богино холбогч кабель хийх нь үнэхээр тустай юм.
  • Үүний нэгэн адил, халаах хоолой нь өөрөө дарагдсан байхад юу ч богиносохгүй байхын тулд үнэхээр хэрэгтэй байдаг.
  • GND ба +5V-д маш олон зүйл явж байгаа тул бид аль болох авсаархан байхын тулд нээлттэй кабель (дээрх зургийг үзнэ үү) хийхээр шийдсэн. Хэрэв орон зай асуудал багатай байсан бол талхны самбар эсвэл хамгаалалтын самбар илүү хялбар сонголт байх байсан.
  • Зарим потенциометр нь хачин хэлбэртэй байдаг. Ерөнхийдөө зүүн тугалга нь газардуулга, хамгийн баруун тугалга нь хүч, дунд нь гаралт болно. Хэрэв таных урд болон хойд талд хоёр хөтөчтэй бол арын нэг нь гаралт болно.

Готчас

  • Хэрэв та LCD дэлгэц дээр юу ч харахгүй байгаа бол потенциометрийг нэг тийш, нөгөө рүү нь эргүүлээд үзээрэй. Хамгийн бага ялгаатай нь LCD -ийн агуулга бүрэн харагдахгүй байна.
  • Хэрэв та LCD дэлгэц дээр үнэхээр хачин ойлголтгүй, эсвэл хоёр биш ганцхан мөрийг харж байгаа бол бүх холболт найдвартай байгаа эсэхийг шалгаарай. Бид газардуулгатай буруу холболттой байсан бөгөөд энэ нь дэлгэцийн хамгийн хачирхалтай асуудлуудыг үүсгэсэн юм.
  • LCD эхлүүлэх код (тохиргоо () функц дээр lcd.init () ажиллуулдаг) чухал бөгөөд хэсэг хугацаа шаардагдана. Хэрэв таны дэлгэц дээр ямар нэгэн зүйл буруу болж, утас эвдэрсэн гэж та сэжиглэж байгаа бол эвлэрч байгаа зүйл гэнэт үүнийг ажиллуулна гэж бүү бодоорой. Ардуиног дахин тохируулах шаардлагатай байж магадгүй тул эхлүүлэх код зөв ажиллах боломжтой болно.
  • Таны утас нэлээд богино, гэхдээ хэт богино биш байгаа эсэхийг шалгаарай. Толгойноос хэдхэн сантиметр зайтай тул дахин худалдахаас өөр муу зүйл байхгүй.

Агуу их! Одоо үүнийг гоёмсог зүйлсийг харуулъя.

Алхам 2: Код: Үндсэн ойлголтууд

Код: Үндсэн мэдээлэл
Код: Үндсэн мэдээлэл
Код: Үндсэн мэдээлэл
Код: Үндсэн мэдээлэл

Нэгдүгээрт, хамгийн түрүүнд: "Одоогийн үнэ:" дэлгэцийн дэлгэцийг дээд мөрөнд, хоёр дахь хэсэгт нь санамсаргүй үнээр харуулцгаая. Байнга үнээ шинэчилж байгаарай. Энэ нь маш энгийн боловч LiquidCrystal номын сангийн үндсэн хэрэглээ болон түүний зарим онцлог шинж чанарыг онцлон харуулах болно.

Нэгдүгээрт, номын санг татаж аваад зарим тогтмолуудыг тодорхойлъё.

#оруулах

const uint8_t lcdWidth = 16;

const uint8_t lcdHeight = 2;

const long minPriceInCents = 50;

const long maxPriceInCents = 1999;

const unsigned long minMillisBetweenPriceUpdates = 0.25 * 1000;

const unsigned long maxMillisBetweenPriceUpdates = 2 * 1000

Агуу их! Эдгээр нь үнийн хүрээ, хэр олон удаа шинэчлэгдэх параметрүүд юм. Одоо номын сангаас өгсөн LCD ангийн жишээг гаргаж, эхлүүлье. Бид LCD дэлгэц дээр юу ч харахгүй байсан ч гэсэн бүх зүйл хэвийн байгаа эсэхийг баталгаажуулахын тулд сериал консол дээр ямар нэг зүйлийг хэвлэх болно. Бид үүнийг Arduino гутлын дараа нэг удаа ажилладаг setup () функц дээр хийх болно. Гэхдээ бид lcd хувьсагчийг setup () -ээс гадна зарлаж байгааг анхаарна уу.

LiquidCrystal lcd (12, 11, 5, 4, 3, 2); void setup () {Serial.begin (9600); lcd.begin (lcdWidth, lcdHeight);

Serial.println ("LCD эхлүүлсэн");

lcd.print ("Одоогийн үнэ:");

}

Махны хувьд бид барьсан random () функц болон String () эхлүүлэгчийг ашиглан аравтын үнийг бий болгоно. random () нь зөвхөн бүхэл тоог үүсгэдэг тул бид үр дүнг 100.0-д хувааж, хөвөгч цэгийн утгыг авна. Бид үүнийг loop () хэлбэрээр хийх болно, тиймээс энэ нь аль болох олон удаа тохиолддог, гэхдээ өмнө нь тодорхойлсон тогтмолуудын хооронд санамсаргүй байдлаар хоцордог.

хоосон давталт ()

{давхар үнэ = санамсаргүй (minPriceInCents, maxPriceInCents) / 100.0; String prettyPrice = "$" + String (үнэ, 2); lcd.setCursor (0, 1); lcd.print (prettyPrice); саатал (санамсаргүй (minMillisBetweenPriceUpdates, maxMillisBetweenPriceUpdates)); }

Анхаарах нэг зүйл бол lcd.setCursor () руу залгах явдал юм. LiquidCrystal номын сан нь хэвлэсний дараа таны текстийг дараагийн мөр рүү автоматаар шилжүүлдэггүй тул бид (үл үзэгдэх) курсорыг хоёр дахь мөр рүү гараар шилжүүлэх хэрэгтэй (энд 1-тэг дээр суурилсан). Түүнчлэн "Одоогийн үнэ:" -ийг дахин хэвлэх шаардлагагүй байсныг анхаарна уу; Хэрэв та үүнийг гараар хийхгүй бол LCD дэлгэц цэвэрлэгдэхгүй тул бид зөвхөн динамик текстийг шинэчлэх хэрэгтэй болно.

Үүнийг ажиллуул, та үүнтэй холбоотой асуудлыг хурдан харах болно. Хэрэв үнэ нь "$ 14.99", дараа нь "$ 7.22" байсан бол дэлгэц дээр "$ 7.229" гарч ирнэ. Хэрэв та хэлэхгүй бол дэлгэц өөрөө цэвэрлэгддэггүй гэдгийг санаарай. Та нэг мөрөнд хэвлэсэн байсан ч таны хэвлэснээс өмнөх текст хэвээр үлдэх болно. Энэ асуудлыг шийдэхийн тулд бид хог хаягдлаа дарж бичих боломжтой хоосон зай оруулах ёстой. Үүнийг хийх хамгийн хялбар арга бол манай хөөрхөн Price хувьсагч руу хэдхэн орон зайг ашиглах явдал юм.

String prettyPrice = "$" + String (үнэ, 2) + "";

Энэхүү өөрчлөлтийг хийснээр бид үзэл баримтлалын нотолгоотой боллоо! Үүнийг жаахан бодоод үзье.

Алхам 3: Код: Тусгай тэмдэгтүүд

Код: Тусгай тэмдэгтүүд
Код: Тусгай тэмдэгтүүд
Код: Тусгай тэмдэгтүүд
Код: Тусгай тэмдэгтүүд

Бидний ашиглаж буй LCD модулийн хамгийн гайхалтай онцлогуудын нэг бол 8 хүртэлх захиалгат тэмдэгт үүсгэх чадвар юм. Үүнийг createChar () аргаар хийдэг. Энэ арга нь өгөгдсөн тэмдэгтийн хувьд LCD -ийн аль пикселийг асаахыг тодорхойлдог 8х5 битийн массивыг авдаг. Эдгээр массивыг үүсгэхэд туслах цөөн хэдэн хэрэгсэл онлайн байна. Би энийг ашигласан.

Хэрэв танд дизайнерын хувьд тийм ч таатай санагдахгүй байгаа бол Photoshop дээрх Босго шүүлтүүрийг ашиглан зургийг хар, цагаан болгож, тэмдэгт болгон хөрвүүлэхийг зөвлөж байна. Та хамгийн ихдээ 8 захиалгат тэмдэгт буюу 64x5 пикселтэй гэдгийг санаарай.

Би эдгээр 6 тэмдэгтийг Амазоны сумны лого, үлдсэн 2 -ийг илүү сайн барааны тэмдгийн тэмдэг болгон ашиглахаар шийдсэн. API -ийг хэрхэн ашиглах талаар та Arduino IDE дээрх CustomCharacter жишээг дагаж болно. Би иймэрхүү зүйлийг бүлэглэхээр шийдсэн юм.

// Барааны тэмдгийн тэмдэгтүүдийн өгөгдлийг тодорхойл

const size_t худалдааны тэмдэгCharCount = 2; const uint8_t худалдааны тэмдэгChars [барааны тэмдэгCharCount] [8] = {{B00111, B00010, B00010, B00000, B00000, B00000, B00000, B00000}, {B10100, B11100, B10100, B00000, B00000, B00000, B00000, B00000 B00000}}; uint8_t firstTrademarkCharByte; // Энэ тэмдэгтийг хэвлэхэд ашигладаг байт; initCustomChars () -д томилогдсон

Дараа нь би тэмдэгтүүдийг үүсгэхийн тулд setup () гэж нэрлэдэг ийм функцийг ашигласан.

хүчингүй initCustomChars () {

firstTrademarkCharByte = 0; for (size_t i = 0; i <trademarkCharCount; i ++) {lcd.createChar (logoCharCount+i, (uint8_t *) барааны тэмдэгChars ); }}

Үүний дараа захиалгат тэмдэгтүүдийг хэвлэх нь зохих байтаар lcd.write () ашиглахтай адил хялбар юм. Би янз бүрийн байтуудыг хэвлэх туслах функцийг бичсэн бөгөөд printTrademark () -ийг дараах байдлаар тодорхойлсон.

хоосон бичихRawByteRange (uint8_t мөр, uint8_t col, uint8_t startValue, size_t numBytes)

{for (uint8_t i = 0; i <numBytes; i ++) {lcd.setCursor (col+i, шугам); // print () ашиглах хэрэгтэй, бичих биш () ашиглах хэрэгтэй - хэвлэх нь бүхэл тоон утгыг // мөр болгон хувиргаж * lcd.write (startValue + i) хэвлэх болно; }} хүчингүй printTrademark (uint8_t мөр, uint8_t col) {writeRawByteRange (шугам, col, firstTrademarkCharByte, худалдааны тэмдэгCharCount); }

Амазоны сумны логог үүнтэй ижил аргаар эмчилсэн. Дэлгэрэнгүй мэдээллийг хавсаргасан кодыг үзнэ үү.

Алхам 4: Код: Дээд талууд

Өөртөө жаахан хялбар болгохын тулд би кодонд хэдэн гоё зүйл нэмсэн. Үүнд: тодорхой мөрийг хоосон зайгаар дарж цэвэрлэх функц, өгөгдсөн мөрийг мөрөнд төвлөрүүлэх функц орно.

Би мөн дэлгэцийг гурван үе шаттайгаар эргүүлэхийг хүссэн.

  1. Доорх логотой "Динамик үнэ"
  2. Доорх лого бүхий "Amazon"
  3. санамсаргүй үнийн дэлгэц

Үүний тулд би өгөгдсөн үе хичнээн идэвхтэй байсныг хянаж, тодорхой хугацааны дараа дараагийн үе рүү шилжих энгийн системийг бүтээсэн.

Бүх нарийн ширийн зүйлийг хавсаргасан кодыг үзнэ үү!

Алхам 5: Хайрцаг

Хайрцаг
Хайрцаг

Одоо бид бөмбөгдөгчдийг дуудсангүй, бүх зүйлд зориулж сайхан хайрцаг хийцгээе. Бид үүнийг лазераар тайрсан нийлэг ашиглан хийх болно. Энгийн хайрцаг хийх үйл явцыг эхлүүлэх маш олон онлайн хэрэгслүүд байдаг. Би танд makercase.com -ийг санал болгож байна, учир нь энэ нь материалын зузааныг дотоод хэмжээсээр нь тодорхойлох боломжийг олгодог.

Бид Arduino, LCD болон 9V батерейг хэмжиж, 4 "x 2.5" x 2 "хэмжээтэй тохиолдолд багтаах боломжтой гэж тооцоолсон. Тиймээс бид тэдгээрийг 1/8" зузаантай жижиг үсгээр холбосон. нийлэг. Бид үүссэн PDF -ийг өөрчилж, LCD -ийн дугуйрсан цонх, дэлгэцийн шошгоны доод талд үүр оруулах болно (энэ тухай дараа дэлгэрэнгүй үзэх болно). Үр дүнгийн файлыг PDF хэлбэрээр хавсаргасан болно.

Бид хайрцгийн дөрвөн талыг угсрахдаа нийлэг цавуу (хортой метил этил кетон) ашигласан. Дараа нь бид LCD самбарыг урд талд нь халуун цавуугаар бэхлэв. Бид бүх зүйлийг ажиллуулж, тохируулсны дараа хайрцгийн сүүлийн хоёр талыг халуун цавуугаар битүүмжилсэн бөгөөд ингэснээр дараа нь амархан салгаж болно. Төхөөрөмжийг маш их элэгдэлд орно гэж бид төсөөлөөгүй байсан тул бид Arduino болон батерейг хайрцгийн доод хэсэгт хамгаалалтгүй үлдээсэн.

Боломжит сайжруулалт

  • Бид төхөөрөмжийг асаах, унтраах ямар нэгэн байдлаар бүтээхийг үл тоомсорлов. Ха. Хайрцагны доод эсвэл арын хэсэгт унтраалга байрлуулах нь сайн санаа байх болно.
  • Үзэгдэх байдлыг сайжруулахын тулд өлгөөтэй хаягийн доод талын үүр нь хайрцгийн урд хэсэгт ойрхон байж болох юм.

Алхам 6: холих

Холих
Холих
Холих
Холих

Тэгээд одоо хэцүү хэсэг нь дэлгүүр рүү хулгайлах явдал юм.

Whole Foods брэнд

Whole Foods ба Amazon брендийн урвуу инженерчлэлийн талаар олж мэдсэн зүйлүүд:

  • Үндсэн текст нь ихэвчлэн Scala Sans дээр байдаг
  • Толгой хуудасны текст нь Брайтон шиг харагдаж байгаа бөгөөд эдгээр нь "дулаан, найрсаг" фонтуудын нэг юм
  • Whole Foods Green бол #223323 -тэй ойролцоо зүйл юм
  • Дахин давтагддаг график элементүүдийн жишээг авахын тулд дэлгүүрээ худалдаж аваарай: тэд хуссан хил, нарны гэрэл, энгийн вектор урлагт дуртай.

Өргөгдсөн таг

Бид нийлэг хайрцагны ёроолыг хайчилж, хайрцагт өлгөөтэй шошго хавсаргаж, юу болсныг тайлбарлаж өгнө. Жишээг хавсаргасан PDF дээрээс үзнэ үү. Энэ нь хайчилж, үүрэнд оруулах зориулалттай; энэ нь наалдамхай материалгүйгээр наалддаг байх ёстой.

Тавиур

Хайрцгийг тавиур дээр бэхлэх тухайд Whole Foods нь тавиурын нэлээд стандарт бүрэлдэхүүн хэсгүүдийг ашигладаг. Бид хэмжилт хийж, тоног төхөөрөмжийн дэлгүүрээс тохирох дэгээ олсон. Бид хайрцгийг дэгээнд халуун цавуугаар наасан.

Хэрэв та ийм дэгээ олж чадахгүй бол соронзыг туршиж үзээрэй - хайрцгийн ар тал руу нааж, тавиур дээр тавь.

Байрлуулах

Хажуугаар өнгөрч буй хүмүүсийн анхаарлыг татахын тулд хайрцгийг нүдний түвшинд байрлуул. Битгий баригд! Сайн сайхныг хүсье!

Зөвлөмж болгож буй: