Страница 1 из 1 |
Автор | Сообщение |
---|---|
|
3
Добрый вечер! Нужна помощь знатоков пг, есть робот(машинка), который имеет спереди 5 датчиков реагирующих на отражение света, задача состоит в том, чтобы при срабатывании одного из датчиков на дисплей выводилось какой датчик сработал.Я написал програмку, но на дисплей ничего не выводится . Мне сказали, что мол надо писать не напрямую, а через буфер или printf, что за буфер, printf я даже не вкурсе. Буду очень благодарен, если кто-то поможет. Вот програмка #include <Tiny2313.h> |
24 дек 2012, 22:35 |
|
|
0
молча минусовать - вот оно, ПГ :) увы, но мои познания в программировании пока далеки от такого уровня... |
24 дек 2012, 23:08 |
|
|
0
если можно через printf до делай через него, это обычная функция вывода, в гугле найдешь её полное описание... |
24 дек 2012, 23:41 |
|
|
0
пытался понять правописание printf так ничего и не понял когда написал printf ("Datchik1") на дисплее просто ничего не отображалось |
24 дек 2012, 23:44 |
|
|
1
http://www.cplusplus.com/reference/cstdio/printf/ вникай как правильно пользоваться :) пример хороший там http://www.rsdn.ru/forum/cpp/1128588.1 тут по-русски есть |
24 дек 2012, 23:51 |
|
|
1
printf("Vidpovidb:%f",res1); //в кавычках пишешь что хочешь вывести, %f значит тип выводимых даных, потом res1 это переменная с резульатом (после % можно задавать точность, и еще разные штуки). #include <stdio.h> #define PAGES 764 #define RENT 2345.89 #define STRING "Outstanding acting" int main(int argc, char* argv[]) { // integer printf("1 *%d*\n", PAGES); printf("2 *%2d*\n", PAGES); printf("3 *%10d*\n", PAGES); printf("4 *%-10d*\n", PAGES); printf("5 *%d**% d**% d**\n", 42, 42, -42); printf("6 *%5d**%5.3d**%05d**%05.3d**\n", 6, 6, 6, 6); // float printf("7 *%f*\n", RENT); printf("8 *%e*\n", RENT); printf("9 *%4.2f*\n", RENT); printf("10 *%3.1f*\n", RENT); printf("11 *%10.3f*\n", RENT); printf("12 *%10.3e*\n", RENT); printf("13 *%+4.2e*\n", RENT); printf("14 *%010.2f*\n", RENT); // string printf("15 *%2s*\n", STRING); printf("16 *%22s*\n", STRING); printf("17 *%22.5s*\n", STRING); printf("18 *%-22.5s*\n", STRING); return 0; } //скомпилируй и посмотри что будет, разбери каждый пример по отдельности и поймешь 100% |
24 дек 2012, 23:52 |
|
|
0
шарю в си, но бухой в хлам читаю и вижу закорючки напиши потом если не разберешься |
25 дек 2012, 00:00 |
|
|
0
Kolibruk, спасибо за помощь, я работаю в программе CodeVisionAVR и откомпилировать то, что ты написал оно не хочет.Эта программа основывается на языке Си |
25 дек 2012, 00:39 |
|
|
0
я в твоем коде не вижу функций вывода на экран, я для С++ использую две функции или printf или cout, удобство cout - в том, что она "сама" "распознает" формат вывода, а в printf ты сам задаешь формат вывода, так что мне кажеться в твоей проге без разницы чем выводить это на дисплей |
25 дек 2012, 02:13 |
|
<Синестезия> Сервер: Ревущий фьорд |
0
Если C++, то попробуй что-нибудь вроде Код: #include <iostream> int main(int argc, char** argv) { std::cout << "Test string" << std::endl; } А для printf надо не забывать #include <stdio.h> подрубить. |
25 дек 2012, 07:28 |
|
|
0
У тебя нет ни одной функции вывода на дисплей. Ни printf, ни cout. А под буфером я думаю имелось ввиду использование либо указателей, либо некой переменной (на подобии temp) которая будет хранить временной значение. Я б начал копать в сторону временной переменной. А если не секрет, это школа или универ и что за машинка(робот) ? Задача абстрактная или реальная? |
25 дек 2012, 11:38 |
|
|
0
Как можно сказать "Я написал програмку", а потом спрашивать "почему ничего не выводится"? Получается что ты ее не написал |
25 дек 2012, 12:59 |
|
|
0
Вывод на экран производится вот здесь if (Dat1==0) { command_addr=0b10000101; lcd_write_byte (command_addr,0x44); lcd_write_byte (command_addr+1,0x61); lcd_write_byte (command_addr+2,0x74); lcd_write_byte (command_addr+3,0x63); lcd_write_byte (command_addr+4,0x68); lcd_write_byte (command_addr+5,0x69); lcd_write_byte (command_addr+6,0x6B); lcd_write_byte (command_addr+7,0x31); } тут написано, что если на Датчик 1 поступит сигнал, то на дисплее должно высветится Датчик 1 (0x44,0x61,0x74...все эти значения взяты из знакогенератора LCD, т.е. тут написано D,a,t...) ну или можно было написать так if (Dat1==0) { command_addr=0b10000101; lcd_write_byte (command_addr,"D"); lcd_write_byte (command_addr+1,"a"); lcd_write_byte (command_addr+2,"t"); lcd_write_byte (command_addr+3,"c"); lcd_write_byte (command_addr+4,"h"); lcd_write_byte (command_addr+5,"i"); lcd_write_byte (command_addr+6,"k"); lcd_write_byte (command_addr+7,"1"); } т.е вывод на экран производится через команду lcd_write_byte, но чтобы оно не записывало всё в одну ячейку мы пишем lcd_write_byte (command_addr+1,(символ)) braz, университет, вот сам робот Мне сказали, что один тип уже с ним работал и выводил он информацию на дисплей через буфер, вот что за буфер я без понятия.Еще раз напомню, что работаю в программе CodeVisionAVR |
25 дек 2012, 17:01 |
|
|
1
попробуй http://elecrom.wordpress.com/2009/07/14/codevisionavr-tip-how-to-display-formatted-numbers-on-lcd/ |
25 дек 2012, 17:23 |
|
Страница 1 из 1 |