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 Опубліковано 28 Лютого, 2013 в 15:12 Автор Поділитися #39 Опубліковано 28 Лютого, 2013 в 15:12 Посилання на коментар Поділитись на інші сайти Поділитися
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 Посилання на коментар Поділитись на інші сайти Поділитися
Рекомендовані повідомлення
Для публікації повідомлень створіть обліковий запис або авторизуйтесь
Ви повинні бути користувачем, щоб залишити коментар
Створити обліковий запис
Зареєструйте новий обліковий запис у нашій спільноті. Це дуже просто!
Реєстрація нового користувачаУвійти
Вже є акаунт? Увійти до системи.
Увійти