Задать вопрос
  • Как импортировать данные из текстового файла, который ежедневно сохраняется на Диск Гугл?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    Сделайте функцию, повесьте её на триггер по времени (ежедневный). В функции:
    1) Открыть итератор файлов с определенным именем
    var fileIterator = DriveApp.getFilesByName(fileName);

    2) Получить содержимое файла(ов):
    while(fileIterator.hasNext()){
      var textFromFile = fileIterator.next().getAs(ContentService.MimeType.TEXT);
    };

    3) Записать данные куда нужно
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName(name).getRange(row, column).setValue(textFromFile );
    Ответ написан
    Комментировать
  • Как отправлять письма из google таблицы?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    1) Получить данные из нужного диапазона
    var inData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Лист1").getRange("A1:C").getValues();

    2) Отфильтровать по нужному email (для надёжности я тут бы ещё всё к нижнему регистру привёл)
    inData = inData.filter(row=>row[2]==="example@site.com");

    3) Собрать из остатков массива письмо и отправить с помощью MailApp.sendEmail(recipient, subject, body)
    Ответ написан
    Комментировать
  • Как составить формулу для суммирования столбца над ячейкой?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Вот так:
    =СУММ(ДВССЫЛ("R2C[0]:R[-1]C";0))
    Ответ написан
    Комментировать
  • Как сделать определенное количество шагов шаговиком в секунду?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    setMaxSpeed - это и есть "определенное число шагов в секунду", т.е. скорость
    А вместо
    stepper1.moveTo(position);
    в вашем случае лучше использовать
    stepper1.move (300);
    Ответ написан
    Комментировать
  • Чем заменить сборку Дарлингтона ULN2003A?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Есть сборки по 2 транзистора в разных корпусах(TSOP, QFN, SOIC) по 6/8 ног. Вполне можно набрать ими нужное кол-во каналов. Посмотреть ассортимент можно тут, например.
    Ответ написан
    Комментировать
  • Нужно ли подключать AVCC ATMEGA8?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Конкретно в Mega8 был баг - Vcc и AVcc замкнуты внутри контроллера
    И от AVсс работает PORTA.

    Вообще его лучше подключить напрямую к Vcc, если АЦП не используется,
    или же к Vcc через фильтр НЧ(дроссель последовательно + конденсаторы параллельно), если АЦП используется.

    Подробнее - тут, например
    Ответ написан
  • Как изменить пин для RTC3231?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Можно сделать программный I2C и повесить на любые ножки.
    Ответ написан
  • Как получить емэил, вносящего изменения в гугл таблицу?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Для простых триггеров наподобие onEdit и пользовательских функций недоступен объект user, в этом можно убедиться если сделать такой код:
    function onEdit(e) {
      SpreadsheetApp.getActiveRange().setValue(Utilities.formatString("email: %s",e.user.getEmail() ));
    }

    Но никто не запрещает сделать другую функцию и назначить ей триггер "При изменении" (Изменить - Триггеры текущего проекта - Добавление триггера - onEditTrigger - Основное развертывание - Из таблицы - При редактировании - Сохранить):
    function onEditTrigger(event) {
            var userEmail = event.user.getEmail();                  //Email пользователя
    	//Что-то делаем...
    };
    Ответ написан
  • Найти точки окружности?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Несколько дней назад был аналогичный вопрос. Посмотрите мой ответ, есть и формулы и объяснение как это работает
    Ответ написан
    2 комментария
  • Автоматическое создание ссылки при вводе в ячейку ключевого слова?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    Если по-простому - выделите отдельный столбец под надписи и ссылки. В столбце ссылок делайте так:
    =ГИПЕРССЫЛКА("https://example.com/cases/"&A1)
    ,где A1 - ссылка на "case-xxxx"
    Если столбца жалко, или так неудобно - сделать макрос с примерно таким алгоритмом:
    1) Отследить факт изменения ячейки. Для VBA/Excel это будет Worksheet_Change(ByVal e As Range), для Google Spreadsheets - onEdit(e)
    2) Проверить внутри функции какой столбец меняется, если нужный - продолжить, иначе выход
    3) Взять значение и заменить на формулу, которую я писал выше
    Ответ написан
    1 комментарий
  • Как заставить плату работать без включателя?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    1) Проверить включится ли прибор при постоянно нажатой кнопке, если да - то просто замкнуть кнопку перемычкой.
    2) Если первый вариант не сработает - поставить RC цепочку - резистор и конденсатор последовательно(возможно, что подтягивающий резистор там уже есть и хватит одного конденсатора). Подключить это всё параллельно кнопке. Если не сработает - поменять местами резистор и конденсатор. Номинал конденсатора - порядка тысячи микрофарад и напряжением большим чем напряжение питания в 1,5 раза. Номинал резистора - порядка 1 килоома. Произведение R*C - время задержки включения, будет порядка миллисекунды.
    Ответ написан
    1 комментарий
  • Как правильно питать STM32 от аккумулятора 18650?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Попробуйте использовать инструмент от TI, можно подобрать по параметрам. В данном случае питание от 3 до 5 Вольт, ток пару ампер и упор на высокоэффективные преобразователи.
    Сейчас попробовал - выдал 21 вариант, в каждом есть схема, BOM и возможность скачать pdf с подробностями
    Ответ написан
    Комментировать
  • Как построить график функции на excel?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    A1:A31 заполняются числами от -2 до 1 с шагом 0,1
    B1:
    =если(a1<=0;(1+a1^2)/(корень(1+a1^4));1*a1+((sin(a1))^2)/(2+a1))

    По сути x в формуле заменяется на A1, главное скобок не жалеть, тогда меньше вероятность ошибиться.
    И распространить B1 на 30 ячеек вниз.
    Потом выделить оба столбца и вставить диаграмму точечную.

    Больше точек - красивее график. Желательно в значения x вписать пару точек в окрестности нуля, т.к. там прыжок. Например -0,00001 и 0,00001
    Ответ написан
    2 комментария
  • Как разложить кол-во точек по окружности?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Если нужно именно точки по окружности размещать, то проще всего делать это в полярной системе координат. Формулы для пересчёта такие:
    x = R*cos(phi) + x0
    y = R*sin(phi) + y0

    ,где R - радиус окружности, phi - угол поворота от оси x против часовой стрелки, центр окружности находится в точке M(x0, y0). Соответственно если нужно N точек, то
    phi = (0,1,2...N-1)*(2*pi/N)
    Ответ написан
    2 комментария
  • Возможно использовать значение ячейки как ссылку на другую ячейку?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Если нужно скопировать значение из C4, то
    =C4
    Если нужно скопировать значение по адресу, который лежит в A1, т.е. из "С4", то
    =ДВССЫЛ(A1)
    или
    =INDIRECT(A1)
    Ответ написан
    1 комментарий
  • Как конвертировать BASE62 в BINARY?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Большого выигрыша не получить. 62 и 256 - это соответственно 6 и 8 бит, т.е. экономия максимум 25%.
    Как преобразовать, есть несколько вариантов:
    1) преобразовать каждый символ в строке в бинарный код по 6 бит, дополнить общую результирующую строку до длины кратной 8, преобразовать 8ки бит в символы.
    2) Составить таблицу по 4 символа base62, которым будет однозначно соответствовать 3 символа base256. Дополнять строку до длины кратной 4 символам, брать по 4 символа и из таблицы им будет соответствовать 3 символа base256
    Это классическая задачка по информатике на изменение системы счисления с 8 на 16 или 8 в 2, например, без другой промежуточной.
    Общее правило, которое я ещё в школе придумал для себя: если a,b - системы счисления и если a^N = b^M, то каждые N символов в системе a заменяется на M символов в системе b.
    Например:
    перевести 10101010101010101010101 из двоичной в 8ричную систему: [2^3 = 8^1]
    (0)10 101 010 101 010 101 010 101 (_2) = 25252525 (_8)
    перевести 102301023001230 из 4й в 8ричную систему: [4^3 = 8^2]
    102 301 023 001 230 (_4) = 22 61 13 01 54 (_8)
    Ответ написан
  • Посчитать сумму в ячейках, если в каждой ячейке несколько значений?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    В Google Spreadsheets это можно решить так:
    =СУММ(SPLIT(A1;"+"))
    Возможно что в Office 365 есть такие же функции.
    Как вариант, использовать пользовательскую функцию. Для Excel/VBA это будет обёртка вокруг Application.Evaluate()
    Ответ написан
    Комментировать
  • Зачем в этой функции сдвиг?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    1) ([1e7]+-1e3+-4e3+-8e3+-1e11) - формируется строка "10000000-1000-4000-8000-100000000000"
    2) .replace(/[018]/g,c= - пробегаемся по символам, и с каждым 0, 1 и 8 делаем что-то
    3) 15 >> c/4 - 0,1,8 => 15,15,3
    4) crypto.getRandomValues(new Uint8Array(1))[0] - случайное число 0..255
    5) crypto.getRandomValues(new Uint8Array(1))[0]&15 >> c/4 - побитовое И сужает 0..255 до 0..15 или 0..3 (если с=8)
    6) c^crypto.getRandomValues(new Uint8Array(1))[0]&15 >> c/4 - 0 или 1 или 8 XORятся с 5)
    7) Что получилось - переводится в HEX и возвращается вместо символа

    Сдвиг и XOR ( 3) и 6) ) вероятно нужны для большей энтропии, хотя работает и без этого.
    Ответ написан
    1 комментарий
  • Как полностью копировать ячейку с одного листа на другой?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Я бы сделал так:
    /**
     * Копирует значения и форматирование из fromRange в toRange
     *
     * @param {"A1:B10"} fromRange Исходный массив
     * @param {"D1:E10"} toRange Конечный массив
     * @return 0 если выполнилось без ошибок, или описание ошибки
     * @customfunction
     */
    function copyRange(fromRange, toRange){
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      try{
        var source = ss.getRange(fromRange);
        var dest   = ss.getRange(toRange);
        
        dest.setValues(source.getValues());
        dest.setBackgrounds(source.getBackgrounds());
        // и т.д. Есть много чего из форматирования, получается по get... ставится по set...
        
        return 0;//Завершение без ошибок
      }catch(err){
        Logger.log(Utilities.formatString((arguments.callee.toString().match(/function ([^(]*)\(/)[1]) + "(%s) - %s", Array.from(arguments).join(", "), err.message)); //Ошибку в лог
        return err.message;//Завершение с ошибкой
      };
    };

    Использовать так:
    function syncRanges(){
      copyRange("b7:b11", "c7:c11"); // b7:b11 >> c7:c11
      copyRange("f1:f20", "g1:g20"); // f1:f20 >> g1:g20
      //и т.п. можно вызывать несколько раз для разных диапазонов
    };

    И настроить для функции syncRanges() триггер "на изменение таблицы" или "по времени".
    Ответ написан
    Комментировать
  • Как правильно составить план изучения микроконтроллеров для новичка?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Из всех ресурсов, которые мне попадались, могу 100% посоветовать два:
    1) easyelectronics.ru закроет многие вопросы по электронике и микроконтроллерам. Есть сообщество we.easyelectronics.ru в котором попадаются годные статьи
    2) Narod Stream на Youtube и есть отдельный сайт. Мужик снимает очень годные видео по программированию микроконтроллеров. На Си, на ассемблере. PIC, AVR, STM32, ESP и т.п.
    Ответ написан
    Комментировать