Нужно сделать функцию перезагрузки Arduino, с помощью ИК светодиода и ИК приемника.

NaVAnO
Offline
Зарегистрирован: 13.08.2018

Нужно для перезагрузки скетча.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Программная перезагрузка канает? Что за ардуина?

В целом - как примерный вариант программной перезагрузки для Uno, Nano, Pro Mini, Mega:

void(* resetFunc) (void) = 0;
bool wantReset = false;

void interruptHandler()
{
  wantReset = true;
}

void setup()
{
  attachInterrupt(digitalPinToInterrupt(2),interruptHandler, RAISING);
}

void loop()
{
  if(wantReset)
  {
     wantReset = false;
     resetFunc();
  }
}

На пине 2 - прерывание, по высокому уровню ардуина перезагружается.

Есть ещё варианты с аппаратным ватчдогом (надо чекать, чтобы был правильный загрузчик), с внешним ватчдогом - да кучу всяких вариантов.

NaVAnO
Offline
Зарегистрирован: 13.08.2018

Да мне нужна программная перезагрузка только что бы я мог запускать ее с пульта от телевизора. Arduini nano

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

NaVAnO пишет:
Да мне нужна программная перезагрузка только что бы я мог запускать ее с пульта от телевизора. Arduini nano

Вы, надеюсь. понимаете, что если ардуина УЖЕ зависла, то сигнал с ИК она не примет? А если она ЕЩЕ НЕ зависла, то зачем ее перегружать?

gfx125
Offline
Зарегистрирован: 27.05.2017

для чего нужна перезагрузка? Если для перезагрузки зависшей ардуинки - то это не поможет. По работе с пультами есть масса примеров в сети

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

NaVAnO пишет:
Да мне нужна программная перезагрузка только что бы я мог запускать ее с пульта от телевизора. Arduini nano

Как правильно отметили выше - программная перезагрузка по сигналу с кнопки пульта - работать не будет, если дуня УЖЕ зависла. Для перезагрузки УЖЕ зависшей дуни применяют другие решения: либо аппаратный ватчдог, либо - внешний аппаратный ватчдог, примеров по юзанью того и другого - валом в сети, бесплатно.

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

епта, Скиф, ну ты где, спишь чтоля ?

NaVAnO
Offline
Зарегистрирован: 13.08.2018

Я пытаюсь сделать лазертаг и мне нужна функция возражения я нинашел ничего лучше перезагрузки

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

xDriver пишет:

епта, Скиф, ну ты где, спишь чтоля ?

Дай уже ТС-у 500р и программу. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

NaVAnO пишет:
Я пытаюсь сделать лазертаг и мне нужна функция возражения я нинашел ничего лучше перезагрузки

Хочу себе тоже "функцию возражения" и на жену настроить, чтоб автоматически отбрехиватьса.  

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

NaVAnO пишет:
Я пытаюсь сделать лазертаг и мне нужна функция возражения я нинашел ничего лучше перезагрузки

Что за "функция возражения"? Кому она должна возражать? По поводу чего возражать? И главное - какими аргументами она должна возражать?

NaVAnO
Offline
Зарегистрирован: 13.08.2018

Типо если тебя убили что бы начать игру сначала.

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

NaVAnO пишет:
Типо если тебя убили что бы начать игру сначала.

ВОЗРОЖДЕНИЯ?

А зачем для этого дуину перегружать?

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

Так чтобы все массивы зареспаунились.

NaVAnO
Offline
Зарегистрирован: 13.08.2018

А как еще

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

NaVAnO пишет:
Типо если тебя убили что бы начать игру сначала.

Для этого МК перезагружать вовсе не обязательно.

NaVAnO
Offline
Зарегистрирован: 13.08.2018

Тогда подскажите как это сделать?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

NaVAnO пишет:
А как еще

Инициализировать всё по новой, и всё. 

NaVAnO
Offline
Зарегистрирован: 13.08.2018

А это с помощью ИК можно сделать?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

NaVAnO пишет:
Тогда подскажите как это сделать?

Ну ты в setup как-то инициализируешь - переменные там и т.п.? Ну так вынеси всю инициализацию переменных, зависящих от игры, в отдельное место - и кличь откуда надо. Примерно вот так:

bool flag = false;
byte array[10] = {0};

void init()
{
 flag = false;
 memset(array,0,sizeof(array));
}

void setup()
{
 init();
}

void loop()
{
 if(ИГРА_ЗАКОНЧИЛАСЬ)
  init();
else
 {
   продолжаем игру.
 }
}

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

NaVAnO пишет:
А это с помощью ИК можно сделать?

Да.

NaVAnO
Offline
Зарегистрирован: 13.08.2018

А можете мне внести эти изменения в скетч

NaVAnO
Offline
Зарегистрирован: 13.08.2018

Я просто вообще ни понимаю много

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

В пустой ))

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

NaVAnO пишет:
А можете мне внести эти изменения в скетч

Так у тебя скетча вообще нет, как я вижу :) 

NaVAnO
Offline
Зарегистрирован: 13.08.2018

Есть я пошутил

NaVAnO
Offline
Зарегистрирован: 13.08.2018

Как его отправить

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

NaVAnO пишет:
Как его отправить

Можно сюда выложить, на панели инструментов редактора есть кнопочка "code" - жмакаешь её и вставляешь свой код. А там - посмотрим, откуда ты этот код утянул :)

NaVAnO
Offline
Зарегистрирован: 13.08.2018

В инете нашел

Green
Offline
Зарегистрирован: 01.10.2015

Как обычно. На деревню дедушке. (Detsemen-у))

NaVAnO
Offline
Зарегистрирован: 13.08.2018
// Начало кода (копировать и вставлять в Arduino sketch)

//

// Duino Tag release V1.01

// Лазерная метка для arduino на основе протокола Miles Tag.

// По J44industries: www.J44industries.blogspot.com

// Для информации о создании собственного Дуино Таггер идут: https://www.instructables.com/member/j44/

//

// Большая заслуга заслуживает того, чтобы пойти в Duane O'Brien, если бы не было отличных учебников Duino Tag, которые он написал, я бы никогда не смог написать этот код.

// Учебники Duane настоятельно рекомендуется читать для того, чтобы получить лучшее понимание arduino и ИК-связи. См. его сайт http://aterribleidea.com/duino-tag-resources/

//

// Этот код устанавливает основы для Arduino на основе системы лазерных тегов и пытается придерживаться протокола Miles tag, где это возможно.

// Км тэг детали: http://www.lasertagparts.com/mtdesign.htm

// Есть много возможностей для расширения возможностей этой системы, и, надеюсь, игра будет продолжать развиваться в течение некоторого времени.

// Licence: Attribution Share Alike: дайте кредит, где кредит должен быть, но вы можете делать то, что вам нравится с кодом.

// Если у вас есть Код, улучшений или дополнений пожалуйста, перейдите на http://duinotag.blogspot.com

//

#include <IRremote.h>

// Digital IO's

//int lifePin = ; // An analogue output (PWM) level corresponds to remaining life. Use PWM pin: 3,5,6,9,10 or 11. Can be used to drive LED bar graphs. eg LM3914N

//int ammoPin = ; // An analogue output (PWM) level corresponds to remaining ammunition. Use PWM pin: 3,5,6,9,10 or 11.

//int trigger2Pin = ; // Push button for secondary fire. Low = pressed

//int IRtransmit2Pin = 8; // Secondary fire mode IR transmitter pin: Use pins 2,4,7,8,12 or 13. DO NOT USE PWM pins!!

int IRreceive2Pin = 99; // Allows for checking external sensors are attached as well as distinguishing between sensor locations (eg spotting head shots)

//int audioPin = 9; // Audio Trigger. Can be used to set off sounds recorded in the kind of electronics you can get in greetings card that play a custom message.

int x=0;

const byte teamPin = 3; //if you hold trigger when start, you ll be team 2 , led red on

int triggerPin = 4; // Push button for primary fire. Low = pressed

int speakerPin = 5; // Direct output to piezo sounder/speaker

int hitPin = 13; // LED output pin used to indicate when the player has been hit.

int IRtransmitPin = 7; // Primary fire mode IR transmitter pin: Use pins 2,4,7,8,12 or 13. DO NOT USE PWM pins!! More info: http://j44industries.blogspot.com/2009/09/arduino-frequency-generation.h...

int IRreceivePin = 6;

int recarga = 8;

String recebido="0";

// The pin that incoming IR signals are read from

// Minimum gun requirements: trigger, receiver, IR led, hit LED.

int ledTeamPin =2;

// Player and Game details

int myTeamID = 1; // 1-7 (0 = system message)

int myPlayerID = 5; // Player ID

int myGameID = 1; // Interprited by configureGame subroutine; allows for quick change of game types.

int myWeaponID = 0; // Deffined by gameType and configureGame subroutine.

int myWeaponHP = 0; // Deffined by gameType and configureGame subroutine.

int maxAmmo = 0; // Deffined by gameType and configureGame subroutine.

int maxLife = 0; // Deffined by gameType and configureGame subroutine.

int automatic = 0; // Deffined by gameType and configureGame subroutine. Automatic fire 0 = Semi Auto, 1 = Fully Auto.

int automatic2 = 0; // Deffined by gameType and configureGame subroutine. Secondary fire auto?

//Incoming signal Details

int received[18]; // Received data: received[0] = which sensor, received[1] - [17] byte1 byte2 parity (Miles Tag structure)

int check = 0; // Variable used in parity checking

// Stats

int ammo = 0; // Current ammunition

int life = 0; // Current life

// Code Variables

int timeOut = 0; // Deffined in frequencyCalculations (IRpulse + 50)

int FIRE = 0; // 0 = don't fire, 1 = Primary Fire, 2 = Secondary Fire

int TR = 0; // Trigger Reading

int LTR = 0; // Last Trigger Reading

int T2R = 0; // Trigger 2 Reading (For secondary fire)

int LT2R = 0; // Last Trigger 2 Reading (For secondary fire)

int Trecarga=0;

float ultimaRecarga=0;

// Signal Properties

int IRpulse = 600; // Basic pulse duration of 600uS MilesTag standard 4*IRpulse for header bit, 2*IRpulse for 1, 1*IRpulse for 0.

int IRfrequency = 38; // Frequency in kHz Standard values are: 38kHz, 40kHz. Choose dependant on your receiver characteristics

int IRt = 0; // LED on time to give correct transmission frequency, calculated in setup.

int IRpulses = 0; // Number of oscillations needed to make a full IRpulse, calculated in setup.

int header = 4; // Header lenght in pulses. 4 = Miles tag standard

int maxSPS = 10; // Maximum Shots Per Seconds. Not yet used.

int TBS = 300; // Time between shots. Not yet used.

float ultimoTiro =0;

// Transmission data

int byte1[8]; // String for storing byte1 of the data which gets transmitted when the player fires.

int byte2[8]; // String for storing byte1 of the data which gets transmitted when the player fires.

int myParity = 0; // String for storing parity of the data which gets transmitted when the player fires.

// Received data

int memory = 10; // Number of signals to be recorded: Allows for the game data to be reviewed after the game, no provision for transmitting / accessing it yet though.

int hitNo = 0; // Hit number

// Byte1

int player[10]; // Array must be as large as memory

int team[10]; // Array must be as large as memory

// Byte2

int weapon[10]; // Array must be as large as memory

int hp[10]; // Array must be as large as memory

int parity[10]; // Array must be as large as memory

//IR

IRrecv irrecv(IRreceivePin);

decode_results results;

//IR

void setup() {

// Serial coms set up to help with debugging.

Serial.begin(9600);

Serial.println("Startup...");

irrecv.enableIRIn(); // Start the receiver

// Pin declarations

//pinMode(audioPin, OUTPUT);

//pinMode(trigger2Pin, INPUT);

//pinMode(IRreceive2Pin, INPUT);

//pinMode(IRtransmit2Pin, OUTPUT);

//pinMode(lifePin, OUTPUT);

//pinMode(ammoPin, OUTPUT);

pinMode(triggerPin, INPUT);

pinMode(speakerPin, OUTPUT);

pinMode(recarga, INPUT);

pinMode(hitPin, OUTPUT);

pinMode(IRtransmitPin, OUTPUT);

pinMode(IRreceivePin, INPUT);

pinMode(teamPin, INPUT);

digitalWrite(teamPin, LOW);

pinMode(ledTeamPin, OUTPUT);

digitalWrite(ledTeamPin, LOW);

digitalWrite(triggerPin, HIGH); // Not really needed if your circuit has the correct pull up resistors already but doesn't harm

// digitalWrite(trigger2Pin, HIGH); // Not really needed if your circuit has the correct pull up resistors already but doesn't harm

digitalWrite(recarga, HIGH);

frequencyCalculations(); // Calculates pulse lengths etc for desired frequency

configureGame(); // Look up and configure game details

tagCode(); // Based on game details etc works out the data that will be transmitted when a shot is fired

for (int i = 1;i < 254;i++) { // Loop plays start up noise

//analogWrite(ammoPin, i);

playTone((3000-9*i), 2);

}


Serial.println("Ready....");

}

// Main loop most of the code is in the sub routines

void loop(){

receiveIR();

if(FIRE != 0){

shoot();

}

triggers();

}



/*void lifeDisplay() { // Updates Ammo LED output

float lifeF;

lifeF = (260/maxLife) * life;

if(lifeF <= 0){lifeF = 0;}

if(lifeF > 255){lifeF = 255;}

analogWrite(lifePin, ((int) lifeF));

} */

void receiveIR() { // Void checks for an incoming signal and decodes it if it sees one.

if (irrecv.decode(&results)) {

Serial.println(results.value);

recebido=results.value; //value received by IR sensor

Serial.println(recebido);

irrecv.resume(); // Receive the next value

}

if(myTeamID==0 && recebido=="2399713221") //value send by team 1 gun

{

hit();

}

if(myTeamID==1 && recebido=="2103698458") //value send by team 0 gun

{

hit();

}

}

void shoot() {

if(FIRE == 1){ // Has the trigger been pressed?

Serial.println("FIRE 1");

sendPulse(IRtransmitPin, 4); // Transmit Header pulse, send pulse subroutine deals with the details

delayMicroseconds(IRpulse);

for(int i = 0; i < 8; i++) { // Transmit Byte1

if(byte1[i] == 1){

sendPulse(IRtransmitPin, 1);

//Serial.print("1 ");

}

//else{Serial.print("0 ");}

sendPulse(IRtransmitPin, 1);

delayMicroseconds(IRpulse);

}

for(int i = 0; i < 8; i++) { // Transmit Byte2

if(byte2[i] == 1){

sendPulse(IRtransmitPin, 1);

// Serial.print("1 ");

}

//else{Serial.print("0 ");}

sendPulse(IRtransmitPin, 1);

delayMicroseconds(IRpulse);

}

if(myParity == 1){ // Parity

sendPulse(IRtransmitPin, 1);

}

sendPulse(IRtransmitPin, 1);

delayMicroseconds(IRpulse);

Serial.println("");

Serial.println("DONE 1");

}

if(FIRE == 2){ // Where a secondary fire mode would be added

Serial.println("FIRE 2");

sendPulse(IRtransmitPin, 4); // Header

Serial.println("DONE 2");

}

FIRE = 0;

ammo = ammo - 1;

}

void sendPulse(int pin, int length){ // importing variables like this allows for secondary fire modes etc.

// This void genertates the carrier frequency for the information to be transmitted

int i = 0;

int o = 0;

while( i < length ){

i++;

while( o < IRpulses ){

o++;

digitalWrite(pin, HIGH);

delayMicroseconds(IRt);

digitalWrite(pin, LOW);

delayMicroseconds(IRt);

}

}

}

void triggers() { // Checks to see if the triggers have been presses

LTR = TR; // Records previous state. Primary fire

// LT2R = T2R; // Records previous state. Secondary fire

TR = digitalRead(triggerPin); // Looks up current trigger button state

// T2R = digitalRead(trigger2Pin); // Looks up current trigger button state

// Code looks for changes in trigger state to give it a semi automatic shooting behaviour

if(TR != LTR && TR == LOW && (millis()-ultimoTiro) > TBS){

FIRE = 1;

ultimoTiro=millis();

}

if(T2R != LT2R && T2R == LOW){

FIRE = 2;

}

if(TR == LOW && automatic == 1){

FIRE = 1;

}

if(T2R == LOW && automatic2 == 1){

FIRE = 2;

}

if(FIRE == 1 || FIRE == 2){

if(ammo < 1){FIRE = 0; noAmmo();}

if(life < 1){FIRE = 0; dead();}

// Fire rate code to be added here

}

//verifica se recarregou a arma

Trecarga=digitalRead(recarga);

if((Trecarga==LOW) && (millis() - ultimaRecarga) > TBS)

{

ultimaRecarga=millis();

playTone(500, 100);

playTone(500, 100);

playTone(500, 100);

ammo=8;

}

}

void configureGame() { // Where the game characteristics are stored, allows several game types to be recorded and you only have to change one variable (myGameID) to pick the game.

if(myGameID == 0){

x=digitalRead(recarga);

Serial.println("Valor de X");

Serial.println(x);

// if(digitalRead(triggerPin)==LOW) //define the team based in the triger, if its pressed when start

if(x==0) //verifica o time baseado na chave normal aberto time 0 normal fechado time 1

{

digitalWrite(ledTeamPin,HIGH);


}

if(myGameID == 0){
  
  myWeaponID = 1;
  
  maxAmmo = 360;
  
  ammo = 30;
  
  maxLife = 3;
  
  life = 3;
  
  myWeaponHP = 1;
  
}

if(myGameID == 1){
  
  myWeaponID = 1;
  
  maxAmmo = 360;
  
  ammo = 30;
  
  maxLife = 3;
  
  life = 3;
  
  myWeaponHP = 1;
  
 }
}
Serial.print("team ");

Serial.print(myTeamID);

}

void frequencyCalculations() { // Works out all the timings needed to give the correct carrier frequency for the IR signal

IRt = (int) (500/IRfrequency);

IRpulses = (int) (IRpulse / (2*IRt));

IRt = IRt - 4;

// Why -4 I hear you cry. It allows for the time taken for commands to be executed.

// More info: http://j44industries.blogspot.com/2009/09/arduino-frequency-generation.h...

Serial.print("Oscilation time period /2: ");

Serial.println(IRt);

Serial.print("Pulses: ");

Serial.println(IRpulses);

timeOut = IRpulse + 900; // Adding 50 to the expected pulse time gives a little margin for error on the pulse read time out value

}

void tagCode() { // Works out what the players tagger code (the code that is transmitted when they shoot) is

byte1[0] = myTeamID >> 2 & B1;

byte1[1] = myTeamID >> 1 & B1;

byte1[2] = myTeamID >> 0 & B1;

byte1[3] = myPlayerID >> 4 & B1;

byte1[4] = myPlayerID >> 3 & B1;

byte1[5] = myPlayerID >> 2 & B1;

byte1[6] = myPlayerID >> 1 & B1;

byte1[7] = myPlayerID >> 0 & B1;

byte2[0] = myWeaponID >> 2 & B1;

byte2[1] = myWeaponID >> 1 & B1;

byte2[2] = myWeaponID >> 0 & B1;

byte2[3] = myWeaponHP >> 4 & B1;

byte2[4] = myWeaponHP >> 3 & B1;

byte2[5] = myWeaponHP >> 2 & B1;

byte2[6] = myWeaponHP >> 1 & B1;

byte2[7] = myWeaponHP >> 0 & B1;

myParity = 0;

for (int i=0; i<8; i++) {

if(byte1[i] == 1){myParity = myParity + 1;}

if(byte2[i] == 1){myParity = myParity + 1;}

myParity = myParity >> 0 & B1;

}

// Next few lines print the full tagger code.

Serial.print("Byte1: ");

Serial.print(byte1[0]);

Serial.print(byte1[1]);

Serial.print(byte1[2]);

Serial.print(byte1[3]);

Serial.print(byte1[4]);

Serial.print(byte1[5]);

Serial.print(byte1[6]);

Serial.print(byte1[7]);

Serial.println();

Serial.print("Byte2: ");

Serial.print(byte2[0]);

Serial.print(byte2[1]);

Serial.print(byte2[2]);

Serial.print(byte2[3]);

Serial.print(byte2[4]);

Serial.print(byte2[5]);

Serial.print(byte2[6]);

Serial.print(byte2[7]);

Serial.println();

Serial.print("Parity: ");

Serial.print(myParity);

Serial.println();

}

void playTone(int tone, int duration) { // A sub routine for playing tones like the standard arduino melody example

for (long i = 0; i < duration * 1000L; i += tone * 2) {

digitalWrite(speakerPin, HIGH);

delayMicroseconds(tone);

digitalWrite(speakerPin, LOW);

delayMicroseconds(tone);

}

}

void dead() { // void determines what the tagger does when it is out of lives

// Makes a few noises and flashes some lights

for (int i = 1;i < 254;i++) {

// analogWrite(ammoPin, i);

playTone((1000+9*i), 2);

}

// analogWrite(ammoPin, ((int) ammo));

// analogWrite(lifePin, ((int) life));

Serial.println("DEAD");

for (int i=0; i<10; i++) {

digitalWrite(hitPin,HIGH);

delay (500);

digitalWrite(hitPin,LOW);

delay (500);

}

}

void noAmmo() { // Make some noise and flash some lights when out of ammo

digitalWrite(hitPin,HIGH);

playTone(500, 100);

playTone(1000, 100);

digitalWrite(hitPin,LOW);

}

void hit() { // Make some noise and flash some lights when you get shot

digitalWrite(hitPin,HIGH);

Serial.println("HIT");

life = life - 1;

Serial.print("Life: ");

Serial.println(life);

playTone(500, 500);

if(life <= 0){dead();}

digitalWrite(hitPin,LOW);

// lifeDisplay();

}

 

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

Я бы тоже сюда влупил "jmp 0", а не стал переписывать иниты ))

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

sadman41 пишет:

Я бы тоже сюда влупил "jmp 0", а не стал переписывать иниты ))

+1 Яркий пример того, что и среди тех, кто выкладывает свои "проекты" на импортных форумах - полно Г-кодеров

NaVAnO
Offline
Зарегистрирован: 13.08.2018

Так поможете?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

NaVAnO пишет:
Так поможете?

Честно? Желания разбираться в сей наколенной поделке - ноль.

NaVAnO
Offline
Зарегистрирован: 13.08.2018

ну помогите пожалуйскта

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

NaVAnO пишет:

ну помогите пожалуйскта

 

Бюджет?

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

Пострелять даст.

NaVAnO
Offline
Зарегистрирован: 13.08.2018

Ну а сколько надо?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

NaVAnO пишет:
Ну а сколько надо?

Много, жизнь нынче дорогая. Дай угадаю - раз поступил встречный вопрос, значит - ты готов заплатить ну максимум рублей 200 на телефон, правда? Если так - это не ко мне, точно. Мои расценки начинаются от 2000 рублей, за меньшее браться просто неинтересно.

gfx125
Offline
Зарегистрирован: 27.05.2017

NaVAnO пишет:
Типо если тебя убили что бы начать игру сначала.

читер?

Green
Offline
Зарегистрирован: 01.10.2015

DIYMan пишет:

[Честно? Желания разбираться в сей наколенной поделке - ноль.


Так всегда. Ассоциации - всё равно что залезть в мусорный бак.((

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Green пишет:

DIYMan пишет:

[Честно? Желания разбираться в сей наколенной поделке - ноль.


Так всегда. Ассоциации - всё равно что залезть в мусорный бак.((

Коллеги, не преувеличивайте :) Не самый убогий код. Встроить в него кнопочку "вечной жизни" -5 минут работы. Строчка life=life-1 прямо бросается в глаза :)

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

dimax, как показывает практика - в таком коде еще пяццот ошибок, которые заказчик после того, как ему незадорого поможешь, вывалит на тебя со словами "а вот что-то не работает"... Потом выясняется, что он паяльник держит за жало и т.п.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

dimax пишет:

Green пишет:

DIYMan пишет:

[Честно? Желания разбираться в сей наколенной поделке - ноль.


Так всегда. Ассоциации - всё равно что залезть в мусорный бак.((

Коллеги, не преувеличивайте :) Не самый убогий код. Встроить в него кнопочку "вечной жизни" -5 минут работы. Строчка life=life-1 прямо бросается в глаза :)

Ну да, а потом ещё ammo править, а то ВНЕЗАПНО окажется, что жизнь-то вечная, а патронов - тю-тю. И т.д. и т.п. Короче, это не пять минут, а полноценное вникание в логику работы, а перед этим - отформатировать это дело (ладно, тут быстро очень). 

Не, без ТЗ - нинада даже смотреть. А с ТЗ - может статься, что быстрее написать с чистого листа, чем вкуривать  в наколенное ;)

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

dimax пишет:

Не самый убогий код. 

Ну если это "не самый убогий":

Serial.print("Byte1: ");
Serial.print(byte1[0]);
Serial.print(byte1[1]);
Serial.print(byte1[2]);
Serial.print(byte1[3]);
Serial.print(byte1[4]);
Serial.print(byte1[5]);
Serial.print(byte1[6]);
Serial.print(byte1[7]);
 

то я даже боюсь предположить, что ты называешь убогим кодом :)

Green
Offline
Зарегистрирован: 01.10.2015

Ну да, в том то и дело что dimax сам пишет похлеще этого.) (Без обид).

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Green, это шутка юмора, или есть примеры, где у меня более убогий код?  :)

Green
Offline
Зарегистрирован: 01.10.2015

Я бы не сказал что "убогий", но через одно место это точно. Видно что вы железячник.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Green, ну да, железячник.  Но вроде никто из программистов не ругался на мои программы.

Green
Offline
Зарегистрирован: 01.10.2015

Дак правильно. Берут и пользуются. Иногда даже спасибо говорят. И это нормально. Это имеет право на жизнь. НО.
Это как письмо, как произведение. Вы можете писать как хотите, но от этого и мнение о вас будет соответствующее.)