![Жалған динамикалық баға белгісі: 6 қадам (суреттермен) Жалған динамикалық баға белгісі: 6 қадам (суреттермен)](https://i.howwhatproduce.com/images/002/image-4928-63-j.webp)
Мазмұны:
2025 Автор: John Day | [email protected]. Соңғы өзгертілген: 2025-01-23 14:51
![Image Image](https://i.howwhatproduce.com/images/002/image-4928-65-j.webp)
![](https://i.ytimg.com/vi/z8l4fS0Mlns/hqdefault.jpg)
![Дисплейді қосу Дисплейді қосу](https://i.howwhatproduce.com/images/002/image-4928-66-j.webp)
Amazon бағасы үнемі өзгеріп отырады. Егер сіз қоржынға заттарды бірнеше сағаттан артық қалдырсаңыз, сізге минуттық ауытқулар туралы ескерту беріледі - мұнда $ 0.10, $ 2.04. Amazon мен оның саудагерлері соңғы тиындарды нарықтан шығару үшін алгоритмдік бағаның қандай да бір түрін қолданатыны анық.
Мұның бәрін күту керек (кеш капитализм және бәрі). Бірақ жағдай нашар болса не болады? 2011 жылы екі бәсекелес алгоритм арасында баға соғысы басталды. Нәтиже: үй шыбындарының өмірлік циклі туралы кітап (баспадан шыққан, бірақ сирек емес) 23,6 миллион долларға көтерілді.
Amazon -ның жақында Whole Foods Market сатып алуы бізді таң қалдырды: динамикалық бағаның бөлшек сауда әлеміне енуіне не кедергі? Егер супермаркеттегі бағалар желідегідей икемді болса ше?
Сонымен, осы нұсқаулықта біз Arduino және шағын СКД бар динамикалық баға дисплейін құрамыз. Біз оны дүкенге жасыру және орнату туралы қысқаша сөйлесетін боламыз.
(Егер сізді қызықтырса, бұл Chrome плагині сізге Amazon -дағы соңғы 120 күндегі кез келген тауардың баға тарихын көрсете алады.)
Қажетті материал
Міне, біз бұл жобаны құру үшін қолданғанбыз:
- Arduino Uno R3
-
Стандартты 16x2 дисплей. Біз мұны Adafruit -тен қолдандық, бірақ ол LiquidCrystal кітапханасымен үйлесімді болса, сіз жақсы болуыңыз керек. Оны Arduino -ға қосу үшін сізге бірнеше нәрсе қажет:
- кейбір секіргіш кабельдер
- 220 Ом резистор
- 10к Ом потенциометр (Бұл дисплей контрастын бақылауға арналған. Егер сізге ұнайтын контраст табылса, потенциометрді тұрақты резистормен ауыстыруға болады.)
- Қорапқа арналған бірнеше акрил. Біз құйылған күңгірт қара акрилді, лазермен кесілген және акрил еріткіш-желіммен және ыстық желіммен жиналғанды қолдандық.
- Дүкенде қорапты бекіту үшін магниттер және/немесе сөре ілгегі. Егер сіз ілмекпен жүретін болсаңыз, онда сіз оны өлшеп, 3D басып шығаруға немесе Интернеттен табуға тырысуға болады (Alibaba, мүмкін?), Немесе … оны басқа да жаман жолмен алуға болады. Сау болыңыз.
Алдымен дисплейді іске қосайық!
1 -қадам: Дисплейді қосу
![Дисплейді қосу Дисплейді қосу](https://i.howwhatproduce.com/images/002/image-4928-67-j.webp)
![Дисплейді қосу Дисплейді қосу](https://i.howwhatproduce.com/images/002/image-4928-68-j.webp)
СКД артында көптеген түйреуіштер бар екені сөзсіз. Бақытымызға орай, біз қолданатын бағдарламалық жасақтама кітапханасының құжаттамасы оны қосуға жақсы нұсқаулыққа ие. Мынаны көр.
Қысқаша айтқанда, сіздің сым келесідей аяқталуы керек:
-
Қуат:
- 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 жобаларының бірін жүктеп, оның жұмыс істейтінін көріңіз! Үлгілердегі СКД инициализация кодын екі рет тексеруді ұмытпаңыз-түйреуіш нөмірлері дұрыс болуы керек, әйтпесе сіз ештеңе көрмейсіз.
Мысалы, «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.init () арқылы () функциясында іске қосылады) маңызды және біраз уақыт алады. Егер сіздің дисплейіңізде бірдеңе дұрыс болмаса және сіз сым ақаулы деп күдіктенсеңіз, онда кенеттен оның жұмыс істеуін күтеді. Сізге Arduino -ны қалпына келтіру қажет болуы мүмкін, сондықтан инициализация коды дұрыс жұмыс істей алады.
- Сымдар өте қысқа екеніне көз жеткізіңіз, бірақ тым қысқа емес. Қайта сатудан гөрі жаман ештеңе жоқ, себебі сіз тақырыптан бірнеше сантиметр қашықтықта боласыз.
Тамаша! Енді оған қызықты нәрселерді көрсетейік.
2 -қадам: Код: негіздері
![Код: негіздері Код: негіздері](https://i.howwhatproduce.com/images/002/image-4928-69-j.webp)
![Код: негіздері Код: негіздері](https://i.howwhatproduce.com/images/002/image-4928-70-j.webp)
Біріншіден, бірінші жолда «Ағымдағы баға:» дисплейі көрсетілсін, ал екіншісінде кездейсоқ баға. Әрқашан бағаны жаңартып отырайық. Бұл өте қарапайым, бірақ 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 класының мысалын жасап, оны инициализациялайық. Біз СКД -де ештеңе көрмесек те, жұмыс істеп тұрғанына сенімді болу үшін сериялық консольде бір нәрсені басып шығарамыз. Біз мұны 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 = «$» + Жол (баға, 2); lcd.setCursor (0, 1); lcd.print (prettyPrice); кешіктіру (кездейсоқ (minMillisBetweenPriceUpdates, maxMillisBetweenPriceUpdates)); }
Айта кету керек, lcd.setCursor () шақыруы. LiquidCrystal кітапханасы басып шығарудан кейін мәтінді келесі жолға автоматты түрде жібермейді, сондықтан біз (көрінбейтін) курсорды екінші жолға қолмен жылжытуымыз керек (мұнда 1-бұл нөлге негізделген). Сондай -ақ, бізге «Ағымдағы баға:» дегенді қайта басып шығарудың қажеті жоқ екенін ескеріңіз; егер сіз мұны қолмен жасамасаңыз, СКД тазартылмайды, сондықтан бізге тек динамикалық мәтінді жаңарту қажет.
Оны іске қосыңыз, сонда сіз байланысты мәселені тез көресіз. Егер баға, айталық, «$ 14.99», сосын «$ 7.22» болса, дисплейде «$ 7.229» көрсетіледі. Есіңізде болсын, дисплей өздігінен тазартылмайды. Егер сіз бір жолда басып шығарсаңыз да, басып шығарылған мәтіннің кез келген мәтіні қалады. Бұл мәселені шешу үшін біз кез келген ықтимал қоқысты қайта жазуға арналған жолды бос орынмен толтыруымыз керек. Мұны істеудің ең оңай жолы - бұл біздің әдеміPrice айнымалысына бірнеше кеңістікті енгізу:
String prettyPrice = «$» + Жол (баға, 2) + «»;
Бұл өзгеріспен бізде тұжырымдаманың дәлелі бар! Соны аздап көтерейік.
3 -қадам: код: таңдамалы таңбалар
![Код: жеке таңбалар Код: жеке таңбалар](https://i.howwhatproduce.com/images/002/image-4928-71-j.webp)
![Код: жеке таңбалар Код: жеке таңбалар](https://i.howwhatproduce.com/images/002/image-4928-72-j.webp)
Біз қолданатын СКД модулінің керемет ерекшеліктерінің бірі - 8 таңдамалы таңбаны құру мүмкіндігі. Бұл createChar () әдісі арқылы жүзеге асады. Бұл әдіс СКД -дің қандай пиксельдері берілген таңбаға қосылатынын сипаттайтын 8х5 биттік массивті алады. Бұл массивтерді құруға көмектесетін бірнеше құралдар бар. Мен мұны қолдандым.
Егер сізде ерекше дизайнерлік сезім болмаса, суретті ақ-қараға айналдыру үшін Photoshop-та шекті сүзгіні қолдануды және оны кейіпкерлерге айналдыруды ұсынамын. Есіңізде болсын, сізде ең көбі 8 реттелетін таңба немесе 64x5 пиксель бар.
Мен Amazon көрсеткі логотипі үшін сол таңбалардың 6 -ын пайдалануды таңдадым, ал қалған 2 таңбаны жақсы сауда белгісі үшін қолдандым. API қолдану әдісі бойынша CustomCharacter үлгісін Arduino IDE -де орындауға болады. Міне, мен заттарды топтастыруды шештім:
// Сауда белгісінің деректерін анықтаңыз
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}}; 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 () мәнін анықтадым:
writeRawByteRange жарамсыз (uint8_t жол, uint8_t col, uint8_t startValue, size_t numBytes)
{for (uint8_t i = 0; i <numBytes; i ++) {lcd.setCursor (col+i, жол); // print () емес, write () пайдалану керек - print // бүтін санды жолға айналдырады және * lcd.write (startValue + i) басып шығарады; }} жарамсыз printTrademark (uint8_t жол, uint8_t col) {writeRawByteRange (жол, col, біріншіTrademarkCharByte, сауда белгісіCharCount); }
Amazon көрсеткі логотипі де осылай өңделген. Толық ақпарат алу үшін берілген кодты қараңыз.
4 -қадам: Код: Некет
Өзіме біршама жеңілдік жасау үшін, мен кодқа бірнеше жақсылықтарды қостым. Бұған мыналар кіреді: белгілі бір жолды бос орынмен қайта жазу арқылы тазарту функциясы және берілген жолды жолға центрлеу функциясы.
Мен сонымен қатар дисплей үш түрлі кезеңнен өтуін қалаймын:
- Төменде логотипі бар «Динамикалық баға»
- Төменде логотипі бар «Amazon»
- кездейсоқ бағаны көрсету
Ол үшін мен берілген фазаның қанша уақыт белсенді болғанын бақылайтын қарапайым жүйені құрдым және белгілі бір кезеңнен кейін келесі кезеңге өтемін.
Барлық қате мәліметтер үшін берілген кодты қараңыз!
5 -қадам: қорап
![Қорап Қорап](https://i.howwhatproduce.com/images/002/image-4928-73-j.webp)
Енді біз бомбалық отрядты шақырмаймыз, бәріне жақсы қорап жасайық. Біз мұны лазермен кесілген акрилмен жасаймыз. Қарапайым қораптарды жасау процесін тез бастауға арналған көптеген онлайн құралдар бар. Мен makercase.com ұсынамын, себебі ол материалдың қалыңдығы үшін ішкі өлшемдер мен есептерді көрсетуге мүмкіндік береді.
Біз Arduino, LCD және 9V батареясын өлшедік және оны 4 «x 2.5» x 2 «өлшемді жағдайда орнатуға болатынын есептедік. акрил. Біз алынған PDF файлын СКД үшін дөңгелектелген терезені және дисплей тегінің төменгі жағындағы слотты қосу үшін өзгерттік (толығырақ кейінірек). Алынған файл PDF түрінде қосылады.
Біз қораптың төрт жағын жинау үшін акрилді желімді қолдандық (улы метилэтил кетон түрі). Содан кейін біз СКД панелін алдыңғы жағына ыстық желіммен бекітеміз. Бізде бәрі жұмыс істеп, орнатылғаннан кейін, біз оны оңай ажырату үшін қораптың соңғы екі жағын ыстық желіммен жапсырдық. Біз құрылғының тозуын күтпегендіктен, біз корпустың төменгі жағында Arduino мен батареяны қауіпсіз күйде қалдырдық.
Ықтимал жақсартулар
- Біз құрылғыны қосу немесе өшірудің кез келген жолын салуды елемедік. Ха. Қораптың төменгі немесе артқы жағындағы қосқышқа арналған бөлме жақсы идея болар еді.
- Ілінетін тегтің төменгі жағындағы саңылау көріністі жақсарту үшін қораптың алдыңғы жағына жақынырақ болуы мүмкін еді.
6 -қадам: араластыру
![Араластыру Араластыру](https://i.howwhatproduce.com/images/002/image-4928-74-j.webp)
![Араластыру Араластыру](https://i.howwhatproduce.com/images/002/image-4928-75-j.webp)
Ал енді қиын бөлігі: оны дүкенге кіргізу.
Whole Foods бренді
Whole Foods және Amazon брендингінің кері инженериясындағы кейбір нәрселерді білдік:
- Негізгі мәтін әдетте Scala Sans тілінде
- Тақырып мәтіні Брайтонға ұқсайтын нәрседе - жалпы «жылы және достық» қаріптердің бірі
- Whole Foods Green - бұл #223323 нөміріне жақын нәрсе
- Қайталанатын графикалық элементтердің мысалдары үшін жергілікті дүкенге барыңыз: олар таралған шекараларды, күн сәулелерін және қарапайым векторлық өнерді жақсы көреді.
Ілінген белгі
Біз акрил корпусының түбіндегі саңылауды кесіп тастадық, осылайша қорапқа ілінетін жапсырманы бекітіп, не болып жатқанын түсіндірдік. Мысал үшін берілген PDF файлын қараңыз. Бұл кесуге және ойыққа енгізуге арналған; ол жабысқақсыз бекітілуі және ұсталуы керек.
Сөре
Қорапты сөреге бекітуге келетін болсақ, Whole Foods сөрелердің стандартты компоненттерін қолданады. Біз өлшеулер жүргіздік және аппараттық дүкеннен үйлесімді ілгекті таптық. Біз қорапты ілгекке ыстық желіммен жапсырдық.
Егер сіз мұндай ілмек таба алмасаңыз, сіз магниттерді қолдана аласыз - қораптың артына жабыстырып, оны сөреге жабыстырыңыз.
Орналастыру
Өткізушілердің назарын аудару үшін қорапты көз деңгейінде қойыңыз. Ұсталмаңыз! Сәттілік!
Ұсынылған:
GPSDO YT, тәртіптелген осциллятор 10 МГц анықтамалық жиілік. Төмен баға. Нақты: 3 қадам
![GPSDO YT, тәртіптелген осциллятор 10 МГц анықтамалық жиілік. Төмен баға. Нақты: 3 қадам GPSDO YT, тәртіптелген осциллятор 10 МГц анықтамалық жиілік. Төмен баға. Нақты: 3 қадам](https://i.howwhatproduce.com/images/001/image-30-59-j.webp)
GPSDO YT, тәртіптелген осциллятор 10 МГц анықтамалық жиілік. Төмен баға. Нақты: ********************************************* ******************************** STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP Бұл ескірген жоба. Оның орнына мені тексеріңіз. 2x16 LCD дисплейінің жаңа нұсқасы мына жерде қол жетімді: https: //www.instructables.com/id
Динамикалық жүйеге IR қашықтан басқару пультін қалай қосуға болады: 5 қадам (суреттермен)
![Динамикалық жүйеге IR қашықтан басқару пультін қалай қосуға болады: 5 қадам (суреттермен) Динамикалық жүйеге IR қашықтан басқару пультін қалай қосуға болады: 5 қадам (суреттермен)](https://i.howwhatproduce.com/images/004/image-10294-j.webp)
Динамикалық жүйеге инфрақызыл қашықтан басқару пультін қалай қосуға болады: Бұл жобада мен өз қолыммен жасалған IR қашықтан басқару пульті арқылы сымсыз басқару үшін динамик жүйеме қосымша схеманы қалай құрғанымды көрсетемін. Бастайық
Өнерге арналған динамикалық жарықдиодты жарықтандыру контроллері: 16 қадам (суреттермен)
![Өнерге арналған динамикалық жарықдиодты жарықтандыру контроллері: 16 қадам (суреттермен) Өнерге арналған динамикалық жарықдиодты жарықтандыру контроллері: 16 қадам (суреттермен)](https://i.howwhatproduce.com/images/005/image-12439-15-j.webp)
Өнерге арналған жарықдиодты жарықтандырудың динамикалық контроллері: Кіріспе: Жарық - бейнелеу өнерінің маңызды аспектісі. Егер жарықтандыру уақыт өте келе өзгерсе, бұл өнердің маңызды өлшеміне айналуы мүмкін. Бұл жоба жарық көрмесіне қатысудан және жарықтандырудың қалай болатынын білуден басталды
Arduino негізіндегі роботтық қолмен қолжетімді баға шешімі: 19 қадам (суреттермен)
![Arduino негізіндегі роботтық қолмен қолжетімді баға шешімі: 19 қадам (суреттермен) Arduino негізіндегі роботтық қолмен қолжетімді баға шешімі: 19 қадам (суреттермен)](https://i.howwhatproduce.com/images/003/image-6590-19-j.webp)
Arduino негізіндегі роботтық қолмен қол жетімді көзқарас шешімі: Біз машинаны көру туралы айтатын болсақ, ол бізге әрқашан қол жетімсіз болып көрінеді. Біз ашық көзбен демонстрация жасадық, оны бәріне оңай жасауға болады. Бұл бейнеде OpenMV камерасы бар, қызыл текше қай жерде болмасын, робот
Жақсы баға V сапасы! Sony Ericsson құлаққаптары: 3 қадам
![Жақсы баға V сапасы! Sony Ericsson құлаққаптары: 3 қадам Жақсы баға V сапасы! Sony Ericsson құлаққаптары: 3 қадам](https://i.howwhatproduce.com/images/004/image-9179-42-j.webp)
Жақсы баға V сапасы! … Sony Ericsson құлаққаптары: бұған кірісейік … Мен бағасы 50 фунтқа дейін болатын Bluetooth құлаққаптарынан 5 фунтқа Sony ericson құлаққаптарын сатып алдым! , олар жақсы баға болды, бірақ сапасы өте нашар, мен сізге бірнеше техниканы көрсетемін