oSs Опубліковано 21 Лютого, 2013 в 14:22 #26 Опубліковано 21 Лютого, 2013 в 14:22 як спалив?ка задача перед реле/ключем? якою нагрузкою керувати хочеш?
HWman Опубліковано 21 Лютого, 2013 в 17:04 Автор #27 Опубліковано 21 Лютого, 2013 в 17:04 (змінено) Подав на аналоговий вхід більшу напругу аніж треба, подав на один і на другий порт... а потім зрозумів, що воно не глючить а запахло смаженим... А з транзисторами, шим і реле ще не пробував, тепер буду обережніший. Я то думав що LaunchPad MSP-EXP430G2 розрахований на 5 вольт і спокійно подавав на аналогові входи 3.9 вольт... а нє 3.3 В Ось і простенький вольтметр на основі прикладів середовища розробки, має максимум 3.3 на ланчпаді або 5.0 Вольт на ардуіно, і працює без розподілювач напруги в народі - дєлітель напряжения. void setup() {Serial.begin(9600);}void loop() {int sensorValue = (analogRead(A0) / 0.310)/1000; // для ардуіно не 0.310 а 0.2048Serial.println(sensorValue);delay (1000);} Мене зацепило це відео: Але мені ще до такого далеко, для початку треба на світлодіодах потренуватись... ЗІ ардуіно поки чекає свого зіркового часу Змінено 21 Лютого, 2013 в 17:12 користувачем HWman
oSs Опубліковано 21 Лютого, 2013 в 21:41 #28 Опубліковано 21 Лютого, 2013 в 21:41 оу, ну ще 4ри в запасі =) Але мені ще до такого далеко, для початку треба на світлодіодах потренуватись... все набагато простіше. є схема: Доволяє блимати настольною лампою напр., а не 13 світлодіодом. =) Десь так: І 220 це не спалений порт. техніка безпеки
oSs Опубліковано 21 Лютого, 2013 в 22:03 #29 Опубліковано 21 Лютого, 2013 в 22:03 тут більше: http://www.getchip.net/posts/062-kak-podklyuchit-k-mikrokontrolleru-nagruzku/
HWman Опубліковано 21 Лютого, 2013 в 22:04 Автор #30 Опубліковано 21 Лютого, 2013 в 22:04 Нє... до мережевої напруги ще далеко, 12/24 В з цією напругою буду працювати...
HWman Опубліковано 23 Лютого, 2013 в 11:03 Автор #31 Опубліковано 23 Лютого, 2013 в 11:03 http://research.andbas.com/2012/09/arduino-isp-programmer-for-attiny-45-85.htmlчудова новина
inhelp Опубліковано 25 Лютого, 2013 в 19:03 #32 Опубліковано 25 Лютого, 2013 в 19:03 А я тут наваляв скетч для, для відображення графіку зміни температури на LCD 1602. відео на youtube.com 2
HWman Опубліковано 25 Лютого, 2013 в 19:07 Автор #33 Опубліковано 25 Лютого, 2013 в 19:07 Скетч в студію, тільки сховай у спойлер
inhelp Опубліковано 25 Лютого, 2013 в 19:16 #34 Опубліковано 25 Лютого, 2013 в 19:16 (змінено) Для початку потрібно запрограмувати символи#include <LiquidCrystal.h>LiquidCrystal lcd(12, 11, 5, 4, 3, 2);byte char1[8] = {B00000,B00000,B00000,B00000,B00000,B00000,B00000,B11111,};byte char2[8] = {B00000,B00000,B00000,B00000,B00000,B00000,B11111,B11111,};byte char3[8] = {B00000,B00000,B00000,B00000,B00000,B11111,B11111,B11111,};byte char4[8] = {B00000,B00000,B00000,B00000,B11111,B11111,B11111,B11111,};byte char5[8] = {B00000,B00000,B00000,B11111,B11111,B11111,B11111,B11111,};byte char6[8] = {B00000,B00000,B11111,B11111,B11111,B11111,B11111,B11111,};byte char7[8] = {B00000,B11111,B11111,B11111,B11111,B11111,B11111,B11111,};byte char8[8] = {B11111,B11111,B11111,B11111,B11111,B11111,B11111,B11111,};int x=0;void setup() {lcd.createChar(1, char1);lcd.createChar(2, char2);lcd.createChar(3, char3);lcd.createChar(4, char4);lcd.createChar(5, char5);lcd.createChar(6, char6);lcd.createChar(7, char7);lcd.createChar(8, char8);lcd.begin(16, 2);}void loop() {}після цього можна заливати скетч#include <LiquidCrystal.h>LiquidCrystal lcd(12, 11, 5, 4, 3, 2);float tempC;int tempPin = 0;int x=0;void setup(){lcd.begin(16, 2);}void loop(){lcd.setCursor(0, 1);tempC = analogRead(tempPin); tempC = (5.0 * tempC * 10.0)/1024.0;lcd.setCursor(0, 0);lcd.print(" \277e\274\276. ");lcd.print((int)tempC,DEC);lcd.print(" C ");lcd.setCursor(x++, 1);lcd.write(tempC-13);if (x > 15) x=0;delay(1000);}Ось і все ...P.S. Графіком можна відображати будь які дані, тільки потрібно трішки переробити скетч і все... Змінено 25 Лютого, 2013 в 19:21 користувачем inhelp 2
Coding Опубліковано 25 Лютого, 2013 в 21:10 #35 Опубліковано 25 Лютого, 2013 в 21:10 Візьми краще звичайний контролер (АВР чи Пік) з простіших, і буде тобі щастя. І як спалеш - то 10грн не так і багато в порівнянні. Куди ти потім ту плату приліпиш? А МК можно багато де використати. Тай паяти там треба мінімум щоб заставити щось йоо робити!
HWman Опубліковано 27 Лютого, 2013 в 16:05 Автор #36 Опубліковано 27 Лютого, 2013 в 16:05 Щось ніяк не виходить нормально виводити більше аніж одна стрічка за допомогою lcd smartie може є у когось варіанти крім цієї програми ? Скетч стандартний для виводу серіал на лсд ЗІ це буде щось типу цього як відпрацюю код на ардуіно перенесу його на ланчпад... 1
inhelp Опубліковано 27 Лютого, 2013 в 17:20 #37 Опубліковано 27 Лютого, 2013 в 17:20 Щось ніяк не виходить нормально виводити більше аніж одна стрічка за допомогою lcd smartie Виклади скетч --- тоді будемо про шось говорити...
HWman Опубліковано 27 Лютого, 2013 в 17:37 Автор #38 Опубліковано 27 Лютого, 2013 в 17:37 (змінено) #include <LiquidCrystal.h>LiquidCrystal lcd(12, 11, 5, 4, 3, 2);void setup(){lcd.begin(16, 2);Serial.begin(9600);lcd.clear();lcd.setCursor(0,0);lcd.print("**LCD SMARTIE**");lcd.setCursor(0,1);lcd.print("on Arduino TEST");}void loop(){if (Serial.available()) {delay(100);lcd.clear();while (Serial.available() > 0) {lcd.write(Serial.read());}}} Змінено 27 Лютого, 2013 в 18:43 користувачем HWman
HWman Опубліковано 1 Березня, 2013 в 15:01 Автор #40 Опубліковано 1 Березня, 2013 в 15:01 Перевірте чи працює http://www.milesburton.com/LCD_Smartie_Powered_By_Arduino_Liquid_Crystal_library ато у мене зараз немає як...
HWman Опубліковано 1 Березня, 2013 в 16:55 Автор #41 Опубліковано 1 Березня, 2013 в 16:55 (змінено) Не-пра-цю-є Оцей скетч працює на моєму 1602A, насолоджуйтесь // include the library code:#include <LiquidCrystal.h>// these constants won't change. But you can change the size of// your LCD using them:const int numRows = 2;const int numCols = 16;// initialize the library with the numbers of the interface pinsLiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);// RS, RW, Enable, 4,5,6,7 (Refer to the back of your LCD for details)void setup() { Serial.begin(9600); // set up the LCD's number of rows and columns: lcd.begin(numRows, numCols); lcd.clear(); lcd.setCursor(0,0); lcd.print("**LCD SMARTIE**"); lcd.setCursor(0,1); lcd.print("on Arduino");}byte serial_getch(){ int incoming; while (Serial.available()==0){ } // read the incoming byte: incoming = Serial.read(); return (byte) (incoming &0xff);}void loop(){ byte rxbyte; byte temp; rxbyte = serial_getch(); if (rxbyte == 254) //Matrix Orbital uses 254 prefix for commands { switch (serial_getch()) { case 66: //backlight on (at previously set brightness) // not implemented break; case 70: //backlight off // not implemented break; case 71: //set cursor position temp = (serial_getch() - 1); //get column byte switch (serial_getch()) //get row byte { //line 1 is already set up case 2: temp += 0x40; break; case 3: temp += 0x14; break; case 4: temp += 0x54; break; default: break; } lcd.command(0b10000000 + temp); break; case 72: //cursor home (reset display position) lcd.command(2); break; case 74: //show underline cursor lcd.command(0b00001110); break; case 75: //underline cursor off case 84: //block cursor off lcd.command(0b00001100); break; case 76: //move cursor left lcd.command(16); break; case 77: //move cursor right lcd.command(20); break; case 78: //define custom char lcd.command(64 + (serial_getch() * 8)); //get+set char address for (temp = 7; temp != 0; temp--) { lcd.print((char)serial_getch()); //get each pattern byte } break; case 83: //show blinking block cursor lcd.command(0b00001111); break; case 86: //GPO OFF //implement later break; case 87: //GPO ON /*temp = serial_getch(); if (temp == 1) { GPO1 = GPO_ON; }*/ break; case 88: //clear display, cursor home lcd.command(1); break; case 152: //set and remember (doesn't save value, though) case 153: //set backlight brightness //not implemented break; //these commands ignored (no parameters) case 35: //read serial number case 36: //read version number case 55: //read module type case 59: //exit flow-control mode case 65: //auto transmit keypresses case 96: //auto-repeat mode off (keypad) case 67: //auto line-wrap on case 68: //auto line-wrap off case 81: //auto scroll on case 82: //auto scroll off case 104: //init horiz bar graph case 109: //init med size digits case 115: //init narrow vert bar graph case 118: //init wide vert bar graph break; default: //all other commands ignored and parameter byte discarded temp = serial_getch(); //dump the command code break; } return; } //END OF COMMAND HANDLER //change accented char to plain, detect and change descenders //NB descenders only work on 5x10 displays. This lookup table works // with my DEM-20845 (Display Elektronik GmbH) LCD using KS0066 chip. switch (rxbyte) { //chars that have direct equivalent in LCD charmap /* case 0x67: //g rxbyte = 0xE7; break; case 0x6A: //j rxbyte = 0xEA; break; case 0x70: //p rxbyte = 0xF0; break; case 0x71: //q rxbyte = 0xF1; break; case 0x79: //y rxbyte = 0xF9; break; */ case 0xE4: //ASCII "a" umlaut rxbyte = 0xE1; break; case 0xF1: //ASCII "n" tilde rxbyte = 0xEE; break; case 0xF6: //ASCII "o" umlaut rxbyte = 0xEF; //was wrong in v0.86 break; case 0xFC: //ASCII "u" umlaut rxbyte = 0xF5; break; //accented -> plain equivalent //and misc symbol translation case 0xA3: //sterling (pounds) rxbyte = 0xED; break; /* case 0xB0: //degrees symbol rxbyte = 0xDF; break; */ case 0xB5: //mu rxbyte = 0xE4; break; case 0xC0: //"A" variants case 0xC1: case 0xC2: case 0xC3: case 0xC4: case 0xC5: rxbyte = 0x41; break; case 0xC8: //"E" variants case 0xC9: case 0xCA: case 0xCB: rxbyte = 0x45; break; case 0xCC: //"I" variants case 0xCD: case 0xCE: case 0xCF: rxbyte = 0x49; break; case 0xD1: //"N" tilde -> plain "N" rxbyte = 0x43; break; case 0xD2: //"O" variants case 0xD3: case 0xD4: case 0xD5: case 0xD6: case 0xD8: rxbyte = 0x4F; break; case 0xD9: //"U" variants case 0xDA: case 0xDB: case 0xDC: rxbyte = 0x55; break; case 0xDD: //"Y" acute -> "Y" rxbyte = 0x59; break; /* case 0xDF: //beta //mucks up LCDSmartie's degree symbol?? rxbyte = 0xE2; break; */ case 0xE0: //"a" variants except umlaut case 0xE1: case 0xE2: case 0xE3: case 0xE5: rxbyte = 0x61; break; case 0xE7: //"c" cedilla -> "c" rxbyte = 0x63; break; case 0xE8: //"e" variants case 0xE9: case 0xEA: case 0xEB: rxbyte = 0x65; break; case 0xEC: //"i" variants case 0xED: case 0xEE: case 0xEF: rxbyte = 0x69; break; case 0xF2: //"o" variants except umlaut case 0xF3: case 0xF4: case 0xF5: case 0xF8: rxbyte = 0x6F; break; case 0xF7: //division symbol rxbyte = 0xFD; break; case 0xF9: //"u" variants except umlaut case 0xFA: case 0xFB: rxbyte = 0x75; break; default: break; } lcd.print((char)rxbyte); //otherwise a plain char so we print it to lcd return;} Смарті качається тут Працює ось так: Задаємо такі параметри: Не забувайте вписати сій номер ком ардуіно. Прога дуже гнучко налаштовується, погугліть. А я піду переносити даний проект на ланчпад. Змінено 1 Березня, 2013 в 21:48 користувачем HWman
HWman Опубліковано 1 Березня, 2013 в 21:50 Автор #42 Опубліковано 1 Березня, 2013 в 21:50 Поправлені деякі помилки у скетчі
HWman Опубліковано 3 Березня, 2013 в 00:44 Автор #43 Опубліковано 3 Березня, 2013 в 00:44 Детальніше тут http://arduino.ru/forum/programmirovanie/analogwrite-na-lyubom-vyvode
HWman Опубліковано 27 Березня, 2013 в 19:59 Автор #44 Опубліковано 27 Березня, 2013 в 19:59 (змінено) Як буде - час зроблю таке ж на ATtiny13. const int numLed[12][4] = { {0,1,2,4}, //1 {0,1,4,2}, //2 {0,2,4,1}, //3 {1,0,2,4}, //4 {1,0,4,2}, //5 {1,2,4,0}, //6 {2,1,0,4}, //7 {2,0,4,1}, //8 {2,4,1,0}, //9 {4,0,1,2}, //10 {4,0,2,1}, //11 {4,2,1,0}, //12};int g = 11;int h = 0;int k = 0;void setup() { pinMode(0, OUTPUT);pinMode(1, OUTPUT);pinMode(2, OUTPUT);pinMode(3, INPUT);pinMode(4, OUTPUT);}void ledLatency (int f){ // для задержки отображения пикаif(g<f && f<=12){ g=f; onLedOne(g-1);}else if(h<100 && g>0){ onLedOne(g-1); h++; }else if(g>0){ g--; onLedOne(g-1); h=0; }else{ h=0;}}void ledon (int a, int b, int c, int d){ //зажигает определённый светодиодpinMode(a, OUTPUT);digitalWrite(a, HIGH);pinMode(b, INPUT);pinMode(c, INPUT);pinMode(d, OUTPUT);digitalWrite(d, LOW);delayMicroseconds(1);for(int i=0; i<5; i++)//очищаем входыpinMode(i, INPUT);}void onLedOne (int i){ //зажигает только один выбранный светодиодint a = numLed[i][0];int b = numLed[i][1];int c = numLed[i][2];int d = numLed[i][3];ledon (a, b, c, d);}void onLed (int f){ //исходя из полученного уровня зажигает свотодиодыfor (int j=0; j<f; j++)onLedOne(j);ledLatency(f);}void loop() {int val = 0;for(int i=0; i<20; i++)val = val+ADC_READ();if(val<20 && val>0) val = 20;if(val<40 && val>20) val =40;if(val<80 && val>40) val = 340;val = val/20;//onLed (map(val, 0, 1023, 0, 12));//delayMicroseconds(1);if(val==0){if(k>3000){ onLedOne(11); for(int i=0; i<1000; i++){ pinMode(3, OUTPUT); digitalWrite(3, HIGH); //delayMicroseconds(1); digitalWrite(3, LOW); } delayMicroseconds(300);}k++;for (int i=0; i<=4; i++) pinMode (i, INPUT);ledLatency(0);delayMicroseconds(10);}else if( val<2){onLed (map(val, 0, 1, 0, 1));k=0;}else if(val<70){onLed (map(val, 2, 69, 2, 6));k=0;}else if(val<141){onLed (map(val, 70, 140, 6, 9));k=0;}else if(val<191){onLed (map(val, 141, 190, 9, 10));k=0;}else if(val<251){onLed (map(val, 191, 250, 10, 12));}else{for (int i=0; i<=11; i++){ onLedOne(11-i); g=12;delayMicroseconds(1); if(k>100){ for(int i=0; i<100; i++){ pinMode(3, OUTPUT); digitalWrite(3, HIGH); //delayMicroseconds(1); digitalWrite(3, LOW); }}}k++;}}int ADC_READ() // запустим АЦП или что?{ADMUX = 3; // ADC pinADCSRA |= 1<<ADEN;ADCSRA |= 1<<ADSC;while(!(ADCSRA & (1<<ADIF)));ADCSRA |= 1<<ADIF;byte low = ADCL;byte high = ADCH;ADCSRA &= ~(1 << ADEN); // отключаем АЦП} До речі, ніхто не хоче собі 10-ток замовити? Якщо, що додаткові витрати пополам Змінено 27 Березня, 2013 в 20:04 користувачем HWman
inhelp Опубліковано 31 Березня, 2013 в 14:05 #45 Опубліковано 31 Березня, 2013 в 14:05 Детальніше тут http://arduino.ru/fo...a-lyubom-vyvode Куплю такого індикатора -- можливо в когось завалявся...
HWman Опубліковано 31 Березня, 2013 в 18:53 Автор #46 Опубліковано 31 Березня, 2013 в 18:53 Є діоди плоскі, нічим не гірше буде...
inhelp Опубліковано 2 Квітня, 2013 в 13:15 #47 Опубліковано 2 Квітня, 2013 в 13:15 Є діоди плоскі, нічим не гірше буде... Знаю, але на кросмодромі такий індикатор коштує 6 грн ...
HWman Опубліковано 2 Квітня, 2013 в 17:40 Автор #48 Опубліковано 2 Квітня, 2013 в 17:40 тут не посперечаєшся, заганяють ціни у 300-400% замість людських 30-40% виручки...
HWman Опубліковано 5 Квітня, 2013 в 21:45 Автор #49 Опубліковано 5 Квітня, 2013 в 21:45 Відкрив для себе що таке "мультиплексація методом Чарлі" http://www.youtube.com/watch?v=KFoZuEKIedoІ відразу руки зачухались, а що якщо таким чином можна виводити покази датчика вологості, типу 25, 35...75, 85% вологості...Помоєму у них межі вимірювань від 25 і до 85%, це я про дешеві, може є якісь круті і супер точні...Звісно це все оселити на тіні13а.Підскажіть будь ласка скільки вартує найпростіший датчик вологості? Може хтось захоче б/в продати?
inhelp Опубліковано 7 Квітня, 2013 в 16:20 #50 Опубліковано 7 Квітня, 2013 в 16:20 (змінено) Відкрив для себе що таке "мультиплексація методом Чарлі"http://www.youtube.com/watch?v=KFoZuEKIedoІ відразу руки зачухались, а що якщо таким чином можна виводити покази датчика вологості, типу 25, 35...75, 85% вологості...Помоєму у них межі вимірювань від 25 і до 85%, це я про дешеві, може є якісь круті і супер точні...Звісно це все оселити на тіні13а.Підскажіть будь ласка скільки вартує найпростіший датчик вологості? Може хтось захоче б/в продати?Цей метод працює але не досконало.... Змінено 7 Квітня, 2013 в 16:21 користувачем inhelp
Рекомендовані повідомлення
Для публікації повідомлень створіть обліковий запис або авторизуйтесь
Ви повинні бути користувачем, щоб залишити коментар
Створити обліковий запис
Зареєструйте новий обліковий запис у нашій спільноті. Це дуже просто!
Реєстрація нового користувачаУвійти
Вже є акаунт? Увійти до системи.
Увійти