Выполнение условий, функций.

Brat_Arduino
Brat_Arduino аватар
Offline
Зарегистрирован: 23.03.2018

Очень прошу помочь! Пожалуйста, напишите мне небольшой скетч: изначально переменная X будет равна 3. На lcd1602 показывать букву , которая в интервале секунды будет передвигаться на один блок вправо. Также выполнить условие - если буква находится на пятом блоке экрана и при этом нажата кнопка на 13 пине - продолжать дальше до 16. Если не нажата - также продолжать и уменьшать X на 1. Аналогично выполнять условия на восьмом, десятом, тринадцатом блоке. Если X будет равен нулю - начинать всё сначала (я делаю игру с жизнями, потому и спрашиваю). Очень прошу, ответьте.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

$99

vk007
Offline
Зарегистрирован: 16.06.2015

Brat_Arduino пишет:

напишите мне небольшой скетч

Brat_Arduino пишет:

я делаю игру

Игру делаете типа вы, но ее счетч должны написать мы? Хитро...

renoshnik
Offline
Зарегистрирован: 11.04.2013

  $98

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

renoshnik пишет:

  $98

wdrakula пишет:

$99

А чо так?

ТС - не ведитесь, скупой платит дважды! Выбирайте только качественные предложения от серьёзных людей!

$100500

Brat_Arduino
Brat_Arduino аватар
Offline
Зарегистрирован: 23.03.2018

Я новичок в этом деле. Делаю игру. Кое чего не могу понять. Я не прошу написать за меня игру, прошу помочь в данной ситуации.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, дык, я ж тоже не прошу ничего сверхестественного, просто $100500

ven-til
Offline
Зарегистрирован: 13.02.2018

ЕвгенийП пишет:

ТС - не ведитесь, скупой платит дважды! Выбирайте только качественные предложения от серьёзных людей!

$100500

Поддерживаю, тут не так все просто, за 98$ вам напишут условия на проверку координат. А Евгений сделает обнаружение столкновений на основе физической модели. Игра сразу в топы выйдет.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Brat_Arduino. 1- Что вы не можете понять? 2- В чем мы ,или конкретно я, можем помочь? 3- и наконец где проработаный сюжет игры и 4)где наметки в коде элементов игры? 

Brat_Arduino
Brat_Arduino аватар
Offline
Зарегистрирован: 23.03.2018

сюжет простой: на экране изображён бегущий человек. снизу нарисована земля, иногда встречаются провалы, чтобы их перепрыгнуть - нажимать кнопку на 13 пине. если не нажать выполнить return loop() т.е. начать заново. Это слишком примитивно. Поэтому, как сделать чтобы число 10 уменьшалось на 1 при падении в пропасть. И когда 10 уменьшится до нуля - тогда и выполнять return loop(). для наглядности выложу кусочек скетча:





[code]
#include <mp3TF.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(2, 3, 4, 5, 10, 12);
boolean keyPresence = false;
int countHealth = 3;
byte fir[8] =
{
    B01100,
    B01100,
    B00000,
    B01110,
    B11100,
    B01100,
    B11010,
    B10011,

};

byte sec[8] =
{
    B01100,
    B01100,
    B00000,
    B01100,
    B01100,
    B01100,
    B01100,
    B01110,

};

byte jump[8] =
{
    B01100,
    B01100,
    B00000,
    B11110,
    B01101,
    B11111,
    B10000,
    B00000,

};

byte door[8] =
{
    B11111,
    B10101,
    B10101,
    B11101,
    B10101,
    B10101,
    B10101,
    B11111,

};

mp3TF zvuk = mp3TF ();
void setup() {
zvuk.init (&Serial);
 Serial.begin (9600);
lcd.begin(16, 2);
lcd.createChar(1, fir);
lcd.createChar(2, sec);
lcd.createChar(3, jump);
lcd.createChar(4, door);
pinMode(13, INPUT_PULLUP);
}

void stan() {
int x = analogRead(A0);
tone(0, 100, 90);
delay(x);
lcd.clear();
}

void gnd1() {
lcd.setCursor(0, 1);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0x20);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
}

void gnd2() {
lcd.setCursor(0, 1);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0x20);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0x20);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
}

void gnd3() {
lcd.setCursor(0, 1);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0x20);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0x20);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0x20);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0x20);
lcd.write(0xFF);
}

void gnd4() {
lcd.setCursor(0, 1);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0x20);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.setCursor(11, 0);
lcd.write(0x8D);
}

void kgnd4() {
lcd.setCursor(0, 1);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0x20);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
}

void gnd5() {
lcd.setCursor(0, 1);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0x20);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0x20);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.setCursor(13, 0);
lcd.print("\4");
lcd.setCursor(13, 1);
lcd.write(0xFF);
lcd.setCursor(14, 1);
lcd.write(0xFF);
lcd.write(0xFF);
}

void dgnd5() {
lcd.setCursor(0, 1);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0x20);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0x20);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.setCursor(13, 1);
lcd.write(0xFF);
lcd.setCursor(14, 1);
lcd.write(0xFF);
lcd.write(0xFF);
}

void lev() {
lcd.setCursor(3, 0);
lcd.write(0xA9);
lcd.print("po");
lcd.write(0xB3);
lcd.print("e");
lcd.write(0xBD);
lcd.write(0xC4);
lcd.setCursor(12, 0);
}

void sledLev() {
lcd.setCursor(3, 0);
lcd.write(0xA9);
lcd.print("po");
lcd.write(0xB3);
lcd.print("e");
lcd.write(0xBD);
lcd.write(0xC4);
lcd.setCursor(11, 0);
}

void level1() {
lev();
lcd.print("1");
delay(1000);
lcd.clear();
land1();
land2();
land3();
land2();
land4();
land2();
land3();
land5();
land2();
land3();
}

void level2() {
lev();
lcd.print("2");
delay(1000);
lcd.clear();
land2();
land3();
land1();
land4();
land3();
land2();
land5();
land3();
land1();
land3();
}

void land1() {
lcd.setCursor(0, 0);
lcd.print("\1");
gnd1();
stan();
lcd.setCursor(1, 0);
lcd.print("\2");
gnd1();
stan();
lcd.setCursor(2, 0);
lcd.print("\1");
gnd1();
stan();
lcd.setCursor(3, 0);
lcd.print("\2");
gnd1();
stan();
lcd.setCursor(4, 0);
lcd.print("\1");
gnd1();
stan();
lcd.setCursor(5, 0);
lcd.print("\2");
gnd1();
stan();
lcd.setCursor(6, 0);
lcd.print("\1");
gnd1();
stan();
if (!digitalRead(13)) {
lcd.setCursor(7, 0);
lcd.print("\3");
gnd1();
stan();
}
else if (digitalRead(13)) {
lcd.setCursor(7, 0);
lcd.print("\2");
gnd1();
stan();
countHealth = countHealth - 1; // вот здесь проблема
if (countHealth < 1) {
return loop();
countHealth = 3;
}
}
lcd.setCursor(8, 0);
lcd.print("\1");
gnd1();
stan();
lcd.setCursor(9, 0);
lcd.print("\2");
gnd1();
stan();
lcd.setCursor(10, 0);
lcd.print("\1");
gnd1();
stan();
lcd.setCursor(11, 0);
lcd.print("\2");
gnd1();
stan();
lcd.setCursor(12, 0);
lcd.print("\1");
gnd1();
stan();
lcd.setCursor(13, 0);
lcd.print("\2");
gnd1();
stan();
lcd.setCursor(14, 0);
lcd.print("\1");
gnd1();
stan();
lcd.setCursor(15, 0);
lcd.print("\2");
gnd1();
stan();
}

void land2() {
lcd.setCursor(0, 0);
lcd.print("\1");
gnd2();
stan();
lcd.setCursor(1, 0);
lcd.print("\2");
gnd2();
stan();
lcd.setCursor(2, 0);
lcd.print("\1");
gnd2();
stan();
lcd.setCursor(3, 0);
lcd.print("\2");
gnd2();
stan();
lcd.setCursor(4, 0);
lcd.print("\1");
gnd2();
stan();
lcd.setCursor(5, 0);
lcd.print("\2");
gnd2();
stan();
lcd.setCursor(6, 0);
lcd.print("\1");
gnd2();
stan();
if (!digitalRead(13)) {
lcd.setCursor(7, 0);
lcd.print("\3");
gnd2();
stan();
}
else if (digitalRead(13)) {
lcd.setCursor(7, 0);
lcd.print("\2");
gnd2();
stan();
countHealth = countHealth - 1;
if (countHealth < 1) {
return loop();
countHealth = 3;
}
}
lcd.setCursor(8, 0);
lcd.print("\1");
gnd2();
stan();
lcd.setCursor(9, 0);
lcd.print("\2");
gnd2();
stan();
if (!digitalRead(13)) {
lcd.setCursor(10, 0);
lcd.print("\3");
gnd2();
stan();
}
else if (digitalRead(13)) {
lcd.setCursor(10, 0);
lcd.print("\1");
gnd2();
stan();
countHealth = countHealth - 1;
if (countHealth < 1) {
return loop();
countHealth = 3;
}
}
lcd.setCursor(11, 0);
lcd.print("\1");
gnd2();
stan();
lcd.setCursor(12, 0);
lcd.print("\2");
gnd2();
stan();
lcd.setCursor(13, 0);
lcd.print("\1");
gnd2();
stan();
lcd.setCursor(14, 0);
lcd.print("\2");
gnd2();
stan();
lcd.setCursor(15, 0);
lcd.print("\1");
gnd2();
stan();
}

void land3() {
lcd.setCursor(0, 0);
lcd.print("\1");
gnd3();
stan();
lcd.setCursor(1, 0);
lcd.print("\2");
gnd3();
stan();
lcd.setCursor(2, 0);
lcd.print("\1");
gnd3();
stan();

if (!digitalRead(13)) {
lcd.setCursor(3, 0);
lcd.print("\3");
gnd3();
stan();
}
else if (digitalRead(13)) {
lcd.setCursor(3, 0);
lcd.print("\2");
gnd3();
stan();
countHealth = countHealth - 1;
if (countHealth < 1) {
return loop();
countHealth = 3;
}
}

lcd.setCursor(4, 0);
lcd.print("\1");
gnd3();
stan();

lcd.setCursor(5, 0);
lcd.print("\2");
gnd3();
stan();
lcd.setCursor(6, 0);
lcd.print("\1");
gnd3();
stan();
if (!digitalRead(13)) {
lcd.setCursor(7, 0);
lcd.print("\3");
gnd3();
stan();
}
else if (digitalRead(13)) {
lcd.setCursor(7, 0);
lcd.print("\2");
gnd3();
stan();
countHealth = countHealth - 1;
if (countHealth < 1) {
return loop();
countHealth = 3;
}
}
lcd.setCursor(8, 0);
lcd.print("\1");
gnd3();
stan();
lcd.setCursor(9, 0);
lcd.print("\2");
gnd3();
stan();
if (!digitalRead(13)) {
lcd.setCursor(10, 0);
lcd.print("\3");
gnd3();
stan();
}
else if (digitalRead(13)) {
lcd.setCursor(10, 0);
lcd.print("\1");
gnd3();
stan();
countHealth = countHealth - 1;
if (countHealth < 1) {
return loop();
countHealth = 3;
}
}
lcd.setCursor(11, 0);
lcd.print("\1");
gnd3();
stan();
lcd.setCursor(12, 0);
lcd.print("\2");
gnd3();
stan();
lcd.setCursor(13, 0);
lcd.print("\1");
gnd3();
stan();
if (!digitalRead(13)) {
lcd.setCursor(14, 0);
lcd.print("\3");
gnd3();
stan();
}
else if (digitalRead(13)) {
lcd.setCursor(14, 0);
lcd.print("\2");
gnd3();
stan();
countHealth = countHealth - 1;
if (countHealth < 1) {
return loop();
countHealth = 3;
}
}
lcd.setCursor(15, 0);
lcd.print("\1");
gnd3();
stan();
}

void land4() {
lcd.setCursor(0, 0);
lcd.print("\1");
gnd4();
stan();
lcd.setCursor(1, 0);
lcd.print("\2");
gnd4();
stan();
lcd.setCursor(2, 0);
lcd.print("\1");
gnd4();
stan();

if (!digitalRead(13)) {
lcd.setCursor(3, 0);
lcd.print("\3");
gnd4();
stan();
}
else if (digitalRead(13)) {
lcd.setCursor(3, 0);
lcd.print("\2");
gnd4();
stan();
countHealth = countHealth - 1;
if (countHealth < 1) {
return loop();
countHealth = 3;
}
}

lcd.setCursor(4, 0);
lcd.print("\1");
gnd4();
stan();

lcd.setCursor(5, 0);
lcd.print("\2");
gnd4();
stan();

lcd.setCursor(6, 0);
lcd.print("\1");
gnd4();
stan();

lcd.setCursor(7, 1);
lcd.print("\2");
gnd4();
stan();
lcd.setCursor(8, 1);
lcd.print("\1");
gnd4();
stan();
lcd.setCursor(9, 1);
lcd.print("\2");
gnd4();
stan();

lcd.setCursor(10, 1);
lcd.print("\1");
gnd4();
stan();

if (!digitalRead(13)) {
keyPresence = true;
lcd.setCursor(11, 0);
lcd.print("\3");
kgnd4();
tone(0, 1000, 90);
delay(200);
lcd.clear();

lcd.setCursor(12, 1);
lcd.print("\1");
kgnd4();
stan();

lcd.setCursor(13, 1);
lcd.print("\2");
kgnd4();
stan();

lcd.setCursor(14, 1);
lcd.print("\1");
kgnd4();
stan();

lcd.setCursor(15, 1);
lcd.print("\2");
kgnd4();
stan();
}

else if (digitalRead(13)) {
keyPresence = false;
lcd.setCursor(11, 1);
lcd.print("\2");
gnd4();
stan();

lcd.setCursor(12, 1);
lcd.print("\1");
gnd4();
stan();

lcd.setCursor(13, 1);
lcd.print("\2");
gnd4();
stan();

lcd.setCursor(14, 1);
lcd.print("\1");
gnd4();
stan();

lcd.setCursor(15, 1);
lcd.print("\2");
gnd4();
stan();
}
}

void land5() {
lcd.setCursor(0, 0);
lcd.print("\1");
gnd5();
stan();
lcd.setCursor(1, 0);
lcd.print("\2");
gnd5();
stan();
lcd.setCursor(2, 0);
lcd.print("\1");
gnd5();
stan();

if (!digitalRead(13)) {
lcd.setCursor(3, 0);
lcd.print("\3");
gnd5();
stan();
}
else if (digitalRead(13)) {
lcd.setCursor(3, 0);
lcd.print("\2");
gnd5();
stan();
countHealth = countHealth - 1;
if (countHealth < 1) {
return loop();
countHealth = 3;
}
}

lcd.setCursor(4, 0);
lcd.print("\1");
gnd5();
stan();

lcd.setCursor(5, 0);
lcd.print("\2");
gnd5();
stan();
lcd.setCursor(6, 0);
lcd.print("\1");
gnd5();
stan();
lcd.setCursor(7, 0);
lcd.print("\2");
gnd5();
stan();

if (!digitalRead(13)) {
lcd.setCursor(8, 0);
lcd.print("\3");
gnd5();
stan();
}
else if (digitalRead(13)) {
lcd.setCursor(8, 0);
lcd.print("\2");
gnd5();
stan();
countHealth = countHealth - 1;
if (countHealth < 1) {
return loop();
countHealth = 3;
}
}

lcd.setCursor(9, 0);
lcd.print("\1");
gnd5();
stan();
lcd.setCursor(10, 0);
lcd.print("\2");
gnd5();
stan();

lcd.setCursor(11, 0);
lcd.print("\1");
gnd5();
stan();

lcd.setCursor(12, 0);
lcd.print("\2");
gnd5();
stan();

if (keyPresence && !digitalRead(13)) {
lcd.setCursor(13, 0);
lcd.print("\1");
dgnd5();
delay(200);
lcd.clear();
lcd.setCursor(14, 0);
lcd.print("\2");
dgnd5();
stan();
lcd.setCursor(15, 0);
lcd.print("\1");
dgnd5();
stan();
}
else if (keyPresence && digitalRead(13)) {
lcd.setCursor(12, 0);
lcd.print("\2");
gnd5();
stan();
countHealth = countHealth - 1;
if (countHealth < 1) {
return loop();
countHealth = 3;
}
}
else {
lcd.setCursor(12, 0);
lcd.print("\2");
gnd5();
stan();
countHealth = countHealth - 1;
if (countHealth < 1) { 
return loop();
countHealth = 3;
}
}
}



void loop() {
zvuk.setVolume (25);
zvuk.play (1);
level1();
level2();
}
[/code]

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Такой жести я не видел с тыща девятьсот осьмнадцатого года... Заехали, как сейчас помню, к одной старушке в деревню по пути в Новгород, а она после чарки дареной возьми и покажи рыликвию семейную - грамоту на бересте писанную. И там в точности такие же коды изображены были.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Brat_Arduino. При всей замечательной идее, но структура программы никуда не годится не целиком , ни по частям. Некоторая аналогия. Допустим вы жили в землянке. А теперь решили , что от жизни крота Вы немного подустали и хотите жить в нормальном человеческом доме. А значит полностью убрать землянку и начать строить дом по более "прогрессивным" , чем "земляночные технологиям".

b707
Offline
Зарегистрирован: 26.05.2017

sadman41 пишет:

Такой жести я не видел с тыща девятьсот осьмнадцатого года...

да точно кто-то из "старичков" прикалывается... Та же стиральная машина, только теперь на экране...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Brat_Arduino пишет:
выполнять return loop()
Будьте любезны, с этого места поподробнее.

Brat_Arduino
Brat_Arduino аватар
Offline
Зарегистрирован: 23.03.2018

qwone. Я пробовал применять цикл  x = (x + 1) % 16, где x - переменная, которая будет увеличиватся на 1 от 0 до 16. lcd.setCursor(x, 0); Пробовал выполнять условие if(!digitalRead(13) && x == 7) т.е. если человек находитсся на 7-й строке над пропастью и при этом нажата кнопка - перемещаться дальше. иначе возвращаться в начало. Все работало нормально, но человек не реагировал на нажатия кнопки и просто самостоятельно перебегал пропасть. Я пробовал цикл for(int i = 0; ... ++i) но был тот же результат. Поэтому пришлось делать такой "раздутый" код.

Вот что я пытался делать. Помогите, что нужно исправить?

int placeHero = 0; // изначально переменная placeHero т.е. (место человека) равна нулю
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 10, 12);
void setup() {
pinMode(13, INPUT_PULLUP);
lcd.begin(16, 2);
}

void ground() {
lcd.setCursor(0, 1); //здесь не знаю как упростить...
lcd.write(0xFF);  // а то пишу lcd.write() по 16 раз!
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0x20);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
lcd.write(0xFF);
}

void loop() {
placeHero = (placeHero + 1) % 16; // более упрощённый цикл
lcd.setCursor(placeHero, 0);
lcd.print("E");
ground();
delay(200);
lcd.clear();
if (placeHero == 5 && !digitalRead(13)) {
placeHero = 6;
lcd.setCursor(placeHero, 0);
lcd.print("E");
ground();
delay(200);
lcd.clear();
}
else if (placeHero == 5 && digitalRead(13)) {
return loop();
}
if (placeHero == 15) {
return placeHero;
}
}

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Brat_Arduino пишет:
что нужно исправить?
Вставить код по правилам форума.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

это тоже. Но главное в программах не использовать delay().

Brat_Arduino
Brat_Arduino аватар
Offline
Зарегистрирован: 23.03.2018

А как это без delay()?

millis() что ли? Повторяю ещё раз - я новичок.

Brat_Arduino
Brat_Arduino аватар
Offline
Зарегистрирован: 23.03.2018

Может быть так?

int ms = (millis() / 200) % 16; //

lcd.setCursor(ms, 0);

Или не так?

b707
Offline
Зарегистрирован: 26.05.2017

Брат Ардуино - почему бы вам не начать с чтения учебников и освоения простыхх примеров, типа мигания светодиодом. Кстати, существует пример, обучающий работе с миллис. И тоже со светодиодом. Называется - "Блинк без делей".

А то сразу игру... Почему у вас не возникает желания построить своими руками самолет?

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Brat_Arduino пишет:

Повторяю ещё раз - я новичок.

Здесь это - отягчающее обстоятельство. 

Brat_Arduino
Brat_Arduino аватар
Offline
Зарегистрирован: 23.03.2018

b707. Хе! Да хоть 2 светодиода:







int ledSignal1;
int ledSignal2;
void setup() {
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}

void loop() {
int ms1 = (millis() / 1000) % 2;
int ms2 = (millis() / 700) % 2;
if (ms1 == 0) {
ledSignal1 = 100;
}
if (ms1 == 1) {
ledSignal1 = 0;
}

if (ms2 == 0) {
ledSignal2 = 100;
}
if (ms2 == 1) {
ledSignal2 = 0;
}
analogWrite(10, ledSignal1);
analogWrite(11, ledSignal2);
}
qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Brat_Arduino, ну и что вы написали ? Скорее всего писать надо так 3 скетч отсюда.#2

Brat_Arduino
Brat_Arduino аватар
Offline
Зарегистрирован: 23.03.2018

qwone. Слишком сложно. А чем миллис не пойдёт? Вы же мне сказали не использовать delay(). А я добавил ещё и 2 светодиода.

Logik
Offline
Зарегистрирован: 05.08.2014

Ну qwone любит безсмысленой чепухи накидать. Миллис так как у Вас пойдет. Но намного полезней освоить формирование интервалов через вычитание из текущего миллиса значения миллиса в начале формируемого интервала. Это именно как новичку.

ПС. про переполнение не читайте лучше вообще ;) И уж точно не пишите.

Brat_Arduino
Brat_Arduino аватар
Offline
Зарегистрирован: 23.03.2018

Logik. Спасибо. Да меня вот мучает вопрос: я значение миллис записываю в setCursor. Это перемещается буква на блок вперёд. Но есть проблемы: буква не перемещается а добавляется, не стирая за собой предыдущие, когда дойдёт до конца - тупо останавливается, а мне надо, чтобы начиналось снова. Короче, вот мой скетч:

#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 10, 12); //пины для экрана
void setup() {
lcd.begin(16, 2);
pinMode(13, INPUT_PULLUP); // кнопка
}

void loop() {
int placeHero = (millis() / 500) % 16; // миллис с 0 до 16
lcd.setCursor(placeHero, 0); // ставим курсор в начало и потом его увеличивать на 1
lcd.write(0xff); // отрисовать блок
lcd.setCursor(7, 1); // поставить стрелку вниз
lcd.write(0xd9); //... и нарисовать её
if (placeHero == 6 && digitalRead(13)) { // если увеличился до 7 и НЕ нажата кнопка
return loop(); // начинать сначала
}
}

ОЧЕНЬ ПРОШУ, ПОМОГИТЕ ИСПРАВИТЬ!

Brat_Arduino
Brat_Arduino аватар
Offline
Зарегистрирован: 23.03.2018

Извиняюсь, что 8 раз прислал) проблемы с сетью были

bwn
Offline
Зарегистрирован: 25.08.2014

Вас 15 строке какой гад научил? И куда направится программа после 17 строки, по вашему?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

bwn пишет:

Вас 15 строке какой гад научил? 

Здесь на форуме нашёл. Я такое уже видел :)

bwn
Offline
Зарегистрирован: 25.08.2014

ЕвгенийП пишет:

Здесь на форуме нашёл. Я такое уже видел :)

Значит вирус уже пошел? Надеялся, что зараза только здесь (#13) началась.((((

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

bwn пишет:

Надеялся, что зараза только здесь (#13) началась.((((

Да, ладно! Это очень популярная и полезная конструкция, широко встречающаяся на просторах Интернета - главного учебника наших ньюби. Причём встречается даже в "солидных учебных курсах от больших гуру". Вот, например, "Урок 50. Игра "Лабиринт" на Arduino". Любуйтесь!

----------------------

P.S.
Сегодня трепался по телефону со знакомым - профессором питерского политеха (который "Петра Великого"), неожиданно всплыл наш Форум в забавном контексте.

Мужик говорит, спрашиваю аспиранта, который лабораторные занятия ведёт: "Ну, как там, много у тебя недопусков к экзамену рисуется? А то может не допустишь всех, и во время сессии в Турцию махнём?" - "Да, знаете, задолбали - этот arduino.ru с амперкой вместе хоть через роскомнадзор закрывай!" - "А чего так?" - "Да, сегодня у одного оботуса вижу уж больно необолтусный код, начинаю спрашивать что там да как, чтобы проверить понимает ли что написано, а он мне - "А чего? Тут всё правильно! Мне на arduino.ru подсказали!"".

Во как! Влияние нашего форума на российскую высшую школу!

sadman41
Offline
Зарегистрирован: 19.10.2016

Надо по почерку выяснить - кто писал.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, текста нет, но "необолтусный код" - думаю Квон со своими классами наворотил. Он одно время любил каждому раздолбаю готовый код на тарелочке выкладывать :)

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

нет, квонокод бы не сдал. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Точно мне не сказали, но из контекста я понял, что он и не сдал :)