что он хочет?)

lompw555
Offline
Зарегистрирован: 05.01.2019

Рябяты есть вопрос... дали скетч с просьбой перезалить на другую плату (предыдущая кончилась по р\причине отказа работать ,после небольшого кз и как следствие подачи на него 12 в. (на atmega))) поменял плату на 328 про мини . а она при компиляции пишет       C:\Users\Алексей\Documents\Arduino\sketch_jan05b\sketch_jan05b.ino:66:12: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]  На путь не смотрим просто раб стола взял... Что её от меня бедного нужно??? Кствти с праздниками!!!)

 

 

Altcms
Altcms аватар
Offline
Зарегистрирован: 17.09.2017

Путь с русским языком не понравился. 

lompw555
Offline
Зарегистрирован: 05.01.2019

Спасибо! но до этого было без русского...

C:\Program Files (x86)\Arduino\libraries\Safe\Safe.ino:75:16: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
 
 char *password="443079";
 
Altcms
Altcms аватар
Offline
Зарегистрирован: 17.09.2017

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

lompw555
Offline
Зарегистрирован: 05.01.2019

почил он в неизвестности.... а скетч .....довольно коряво написан на мой взгляд) но вот я его отправлю в следующем посте.

 

lompw555
Offline
Зарегистрирован: 05.01.2019
#define beep_pin A3
#define relay_pin 10
#define red_led_pin 11
#define green_led_pin 12
 
byte red_led_state;
 
void beep_press()
{
  digitalWrite(beep_pin, 1);
  delay(100);
  digitalWrite(beep_pin, 0);
}
 
 
void beep_ok()
{
  digitalWrite(beep_pin, 1);
  delay(1000);
  digitalWrite(beep_pin, 0);
}
 
#define err_beeps 3
void beep_err()
{
  for(byte g=0; g<err_beeps; g++)
  {
    red_led_inverse();
    digitalWrite(beep_pin, 1);
    delay(100);
    digitalWrite(beep_pin, 0);
    red_led_inverse();
    if(g!=err_beeps-1)
      delay(100);
  }
}
 
void red_led_set(byte state)
{
  red_led_state=state;
  digitalWrite(red_led_pin, state);
}
 
void red_led_inverse()
{
  red_led_state=!red_led_state;
  digitalWrite(red_led_pin, red_led_state);
}
 
#include <Keypad.h>
 
const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
  {
    '1','2','3'                  }
  ,
  {
    '4','5','6'                  }
  ,
  {
    '7','8','9'                  }
  ,
  {
    '*','0','#'                  }
};
byte rowPins[ROWS] = {
  5, 9, 3, 4}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {
  6, 7, 8}; //connect to the column pinouts of the keypad
 
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
 
#define pass_len 6
char *password="443079";
#define timeout 2000 //ms
#define block_timeout 1 //ms
 
void setup(){
  Serial.begin(9600);
  pinMode(beep_pin, OUTPUT);
  digitalWrite(beep_pin, 0);
  pinMode(relay_pin,OUTPUT);
  digitalWrite(relay_pin,1);
  pinMode(red_led_pin,OUTPUT);
  digitalWrite(red_led_pin,0); 
  pinMode(green_led_pin,OUTPUT);
  digitalWrite(green_led_pin,0); 
  red_led_state=0;
  Serial.println("start");
}
 
void loop(){
  byte char_cntr;
  char pass_buf[pass_len];
  pass_buf[0]='%';
  char_cntr=0;
  unsigned long start_millis;
  start_millis=millis();
  byte some_entered;
  some_entered=0;
 
  while(char_cntr<pass_len && millis()-start_millis<=timeout)
  { 
    char key = keypad.getKey();
    if (key)
    {
      beep_press();
      Serial.println(key);
      start_millis=millis();
      pass_buf[char_cntr]=key;
      char_cntr++;
      some_entered=1;
    }
  }
 
  byte correct;
  correct=1;
  for(byte i=0; i<pass_len; i++)
  {
    //Serial.print(pass_buf[i]);
    if(pass_buf[i]!=password[i])
    {
      correct=0;
    }
  }
  //Serial.println();
  // delay(500);
  if(some_entered&correct)
  {
    digitalWrite(relay_pin,0);
    digitalWrite(green_led_pin,1);
    beep_ok();
    delay(3000);
    digitalWrite(green_led_pin,0);
    digitalWrite(relay_pin,1);
  }
  else if(some_entered)
  {
    if(char_cntr == pass_len)
    {
      unsigned long block_time=millis();
      beep_err();
      red_led_set(1);
      while(millis()-block_time<block_timeout)
      {
        char key = keypad.getKey();
        if (key)
        {
          Serial.println(key);
          beep_err();
          red_led_set(1);
        }
      }
      red_led_set(0);
    }
    else
    {
      beep_err();
    }
 
  }
}
 
 
 
 
 
 
 
 
lompw555
Offline
Зарегистрирован: 05.01.2019

Я так посмотрел вроде бы рабочий скетч, но что то не нравится...

Altcms
Altcms аватар
Offline
Зарегистрирован: 17.09.2017

Ну так залейте и проверьте :) 

Скетч использует 3854 байт (11%) памяти устройства. Всего доступно 32256 байт.

Глобальные переменные используют 342 байт (16%) динамической памяти, оставляя 1706 байт для локальных переменных. Максимум: 2048 байт.

 

lompw555
Offline
Зарегистрирован: 05.01.2019

прежде чем залить хочется понять))) я ж учусь ещё))))

Altcms
Altcms аватар
Offline
Зарегистрирован: 17.09.2017

Ну тогда надо было тему создать, в Песочница. Раздел для новичков, прочитать как правильно вставлять код, и учесть что помогать по скетчам написаным не Вами не будут. 

lompw555
Offline
Зарегистрирован: 05.01.2019

спасибо))

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

Плюньте и забейте. Ничего страшного.

Но если уж неймётся, то в тех строках на которые ругается, перед текстовыми константами в кавычках поставьте "(char *)". например

// было
char * s = "kaka";

// надо
char * s = (char *) "kaka";

Не будет ругаться.

lompw555
Offline
Зарегистрирован: 05.01.2019

спасибо!!!!! помогло)