Arduino: передача массива строк в качестве функции

За что я не очень люблю СИ, так за то что можно споткнуться на пустом месте и долго думать почему так? И в этот раз тоже, долго гуглил, почему у меня не получается передать массив строк в функцию, массив внутри «обнулялся». Наконец наткнулся, что СИ это не умеет. Умеет только передавать указатель на массив. Поэтому функция может выглять подобным образом:


int PutMenu(int cnt,String *mass){
  for (int i=0; i <= cnt; i++){
    Serial.println(mass[i]);    
  };
}

void setup(void){
    Serial.begin(9600);
    String massive[] = { "name", "test", "name", "need", "you", "need", "me", "test" };
    PutMenu(3,massive);
    return 0;
}

void loop(void){

}

Чтиво за последние полгода

Давненько не выкладывал список литературы, которую читаю. Сын уже подрос, и читать ему не нужно. Дочь вырубается после 5 минут чтения, потому одну книгу мусолим уже полгода 😉 Потому выкладываю только свой список литературы. Не весь правда, т.к. FBReader меня немножко подвел не так давно, и список «читаемых сейчас» книг был утерян.

  • Сам себе властелин 1-5. Александр Горбов. Уже читал, но перечитал, т.к. вышла последняя часть. Оценка 4/5. Краткий сюжет: очередной попаданец волею судеб попадает в мир магии, где оказывается наследником замка Кулькуара
  • Отмороженный 1-4. Гарцевич Е.А. Оценка 3 из 5. МЧСник исследую мир в Арктике, попал в другое измерение, и был «заморожен» на 100 лет. Мосле того как это измерение было обнаружено, его спасли. И далее он помогает исследовать «Мерзлоту».
  • Адский Пекарь. Сергей Мутев, Сириус Дрейк. Оценка 1 из 5. Не дочитал, ибо бред..
  • Моё пространственное убежище 1-14. Дмитрий Дорничев. Оценка 3 из 5. Зомобиаппокалипсис с системой.

Arduino Nano: использование сдвигового регистра, пример

Сдвиговые регистры — это два вида микроскхем 74HC595 и 74HC165. первый соответственно предназначен для расширения пинов для выхода (например помигать светодиодиками, включать выключать реле и т.п.), а второй для расширения пинов для входа (чтение состояние кнопочек, датчики движения и т.п.). Наиважнейшим моментом отмечу, что считывать/посылать состояние можем только в виде 0 и 1. Соответственно подключать можем устройства которые могут принимать только два состояния: вкл и выкл. Рассмотрим схему 74HC595

Соответственно на выходы Q0-Q7 мы сможем подавать состояние включено-выключено (1/0), отослав на ногу DS маску из 8 бит. Например 01010101. Остальные ноги:

  • GND — земля
  • MR — сброс значений регистра. Сброс происходит при получении LOW
  • SH_CP (SRCLK) — линия синхроимпульса для передачи данных из DS во внутренние ячейки (вход для тактовых импульсов).
  • SH — shift, CP — clock pin ST_CP (RCLK) — линия синхроимпульса для передачи данных из внутренних ячеек, во внешние (синхронизация выходов).
  • ST — storage, CP — clock pin OE — инверсный, разрешение на вывод данных с внешних ячеек (вход для переключения состояния выходов из высокоомного в рабочее)
  • DS (SER) — линия последовательных данных (Data Serial)
  • VCC — питание, 5В

Пример подключения 8 светодиодов в виде схемы:

И в виде сборки на макетных платах:

Простейший скетч для такой схемы подключения:

int dataPin = 8;    // к выводу 14 регистра DS
int clockPin = 10;  // к выводу 11 регистра (SH_CP)
int latchPin = 9;  // к выводу 12 регистра (ST_CP)

void setup() {
	pinMode(latchPin, OUTPUT);
	pinMode(clockPin, OUTPUT);
	pinMode(dataPin, OUTPUT);
	digitalWrite(latchPin, LOW);
}

void loop() {
	digitalWrite(latchPin, LOW); // начинаем передачу данных
	shiftOut(dataPin, clockPin, LSBFIRST, 0b11100000);
	digitalWrite(latchPin, HIGH); // прекращаем передачу данных
}

WordPress: Плагин для комментирования записей при помощи vk

Много лет пользовался плагином Social API. Да много лет заброшен и не поддерживается, но работало. Но тут случился переезд сайта с PHP 7.4 на PHP 8.2. И плагин отвалился., Поискал актуальные рабочие плагины — аналоги. Не нашел. Заброшены все. Пришлось закатать рукава и один из самых простых заброшенных плагинов довести до рабочего состояния. Результат выложен тут. Возможно дойдут руки и для того чтобы выложить в репозитарии WordPress.

cf7 Telegram: ошибка 400 при отправке сообщения

Симптомы: При отправке сообщения из контактной формы, сообщение не отправляется в бота, а в логах появляется ошибка вида:

Request has failed with error 400: Bad Request

Изучив чуть плагин, нашел непосредственную функцию отправки сообщения, и чуть её дополнил:

private function request( $url, $args ) {
....
elseif ( $http_code == 400 ) :
  error_log($response['body']);

Ошибка стала чуть вняетнее:

{«ok»:false,»error_code»:400,»description»:»Bad Request: can’t parse entities: Can’t find end of the entity starting at byte offset 289″}

Но ни сколько не понятнее… Стал рыть дальше. Отправка в wordpress осуществляется функцией:

wp_remote_post($url,$args)

Проверив аргументы, выяснил, что попадает внутрь именно то что нужно. Видимо портит данные, что-то глубже внутри функционала wordpress. Проверил концепцию заменив вызов этой функции своим велосипедом:

$params=["chat_id"=>$args["body"]["chat_id"],"text"=>$args["body"]["text"],];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, ($params));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
error_log($result);
curl_close($ch);

И оно заработало.. Ну так и оставил..

1 30 31 32 33 34 308