Набор "йодо" проект 25 "настольный радар"

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Alen13512, 19 май 2020.

  1. Alen13512

    Alen13512 Нерд

    Здравствуйте.
    Есть вопрос по проекту 25 "Настольный радар" из набора "Йодо".
    Можно ли в этот проект добавить зуммер? Если да, то как правильно это прописать в коде?
     
  2. NikitOS

    NikitOS Король шутов Администратор

    Можно. А самому разобраться не хочется?
     
  3. b707

    b707 Гуру

    найти пример работы с зуммером, вставить в свой код...
    Вы какой ответ ожидали на свой вопрос? Вам вроде 21, а не 11
     
    NikitOS нравится это.
  4. Alen13512

    Alen13512 Нерд

    Я это прекрасно понимаю. Я так делала, но зуммер не работал...
     
  5. Alen13512

    Alen13512 Нерд

    А помочь сложно?
    Я пробовала. Не получилось.
     
  6. b707

    b707 Гуру

    выкладывайте свой код, как вы пробовали - поможем
     
  7. Alen13512

    Alen13512 Нерд

    Код добавила из проекта 16 "Парктроник" так же из набора Йодо
    Код (Javascript):
    var ultrasonic = require('@amperka/ultrasonic')
    .connect({trigPin: P10, echoPin: P11});
    var servo = require('@amperka/servo')
    .connect(P13);
    var buzzer = require('@amperka/buzzer')
    .connect(P5)
    .frequency(440);
    var canvas = {
    width: 800,
    height: 500,
    radius: 300,
    margin: 150
    };
    var sectors = {
    count: 18,
    current: 0,
    direction: 1
    };

    sectors.values = new Array(sectors.count);
    function dumpSvg() {
    var svg = [];
    svg.push('<svg width="' + canvas.width + 'px' +
    '" height="' + canvas.height + 'px');
    svg.push('" xmlns="http://www.w3.org/2000/svg">');
    var cx = canvas.width / 2;
    var cy = canvas.height - canvas.margin;
    var astep = Math.PI / sectors.count;
    for (var i = 0; i < sectors.count; ++i) {
    var fill = 'black';
    var stroke = 'green';
    var r = sectors.values[i];
    if (!r || r > canvas.radius) {
    fill = 'none';
    stroke = 'white';
    r = canvas.radius;
    }
    if (i === sectors.current) {
    stroke = 'yellow';
    }
    var a1 = astep * i - Math.PI / 2;
    var a2 = a1 + astep;
    var x1 = cx + r * Math.sin(a1);
    var y1 = cy - r * Math.cos(a1);
    var x2 = cx + r * Math.sin(a2);
    var y2 = cy - r * Math.cos(a2);
    x1 = x1.toFixed(0);
    y1 = y1.toFixed(0);
    x2 = x2.toFixed(0);
    y2 = y2.toFixed(0);
    svg.push('<path d="');
    svg.push('M' + cx + ' ' + cy + ' ');
    svg.push('L' + x1 + ' ' + y1 + ' ');
    svg.push('A' + r + ' ' + r + ' 0, 0, 1, ' +
    x2 + ' ' + y2 + ' ');
    svg.push('Z');
    svg.push('" stroke="' + stroke +
    '" fill="' + fill + '" />');
    }
    svg.push('</svg>');
    console.log(svg.join(''));
    }
    setInterval(function() {
    ultrasonic.ping(function(err, val) {
    sectors.values[sectors.current] = val;
    sectors.current += sectors.direction;
    if (sectors.current === sectors.count - 1 ||
    sectors.current === 0) {
    sectors.direction = -sectors.direction;
    }
    servo.write(sectors.current *
    (180 / sectors.count));
    dumpSvg();
    }, 'mm');
    }, 300);
    setInterval(function() {
    sonic.ping(function(err, val) {
    if (val < 5) {
    buzzer.turnOn();
    } else if (val < 20) {
    buzzer.beep(0.1, 0.1);
    } else if (val < 50) {
    buzzer.beep(0.2, 0.2);
    } else {
    buzzer.turnOff();
    }
    }, 'cm');
    }, 100);
     
  8. NikitOS

    NikitOS Король шутов Администратор

    Помочь можно решить проблему, а тут проблема не описана, выходит, нужно сделать за Вас, а не помочь.

    Вы уж определитесь...
     
  9. Alen13512

    Alen13512 Нерд

    Ну я прошу помочь, ну или подсказать как правильно это прописать.
    Я прописала и у меня не работает сам зуммер и я не могу понять почему.
    Можете подсказать?
    Код (Javascript):
    var ultrasonic = require('@amperka/ultrasonic')
    .connect({trigPin: P10, echoPin: P11});
    var servo = require('@amperka/servo')
    .connect(P13);
    var buzzer = require('@amperka/buzzer')
    .connect(P5)
    .frequency(440);
    var canvas = {
    width: 800,
    height: 500,
    radius: 300,
    margin: 150
    };
    var sectors = {
    count: 18,
    current: 0,
    direction: 1
    };

    sectors.values = new Array(sectors.count);
    function dumpSvg() {
    var svg = [];
    svg.push('<svg width="' + canvas.width + 'px' +
    '" height="' + canvas.height + 'px');
    svg.push('" xmlns="http://www.w3.org/2000/svg">');
    var cx = canvas.width / 2;
    var cy = canvas.height - canvas.margin;
    var astep = Math.PI / sectors.count;
    for (var i = 0; i < sectors.count; ++i) {
    var fill = 'black';
    var stroke = 'green';
    var r = sectors.values[i];
    if (!r || r > canvas.radius) {
    fill = 'none';
    stroke = 'white';
    r = canvas.radius;
    }
    if (i === sectors.current) {
    stroke = 'yellow';
    }
    var a1 = astep * i - Math.PI / 2;
    var a2 = a1 + astep;
    var x1 = cx + r * Math.sin(a1);
    var y1 = cy - r * Math.cos(a1);
    var x2 = cx + r * Math.sin(a2);
    var y2 = cy - r * Math.cos(a2);
    x1 = x1.toFixed(0);
    y1 = y1.toFixed(0);
    x2 = x2.toFixed(0);
    y2 = y2.toFixed(0);
    svg.push('<path d="');
    svg.push('M' + cx + ' ' + cy + ' ');
    svg.push('L' + x1 + ' ' + y1 + ' ');
    svg.push('A' + r + ' ' + r + ' 0, 0, 1, ' +
    x2 + ' ' + y2 + ' ');
    svg.push('Z');
    svg.push('" stroke="' + stroke +
    '" fill="' + fill + '" />');
    }
    svg.push('</svg>');
    console.log(svg.join(''));
    }
    setInterval(function() {
    ultrasonic.ping(function(err, val) {
    sectors.values[sectors.current] = val;
    sectors.current += sectors.direction;
    if (sectors.current === sectors.count - 1 ||
    sectors.current === 0) {
    sectors.direction = -sectors.direction;
    }
    servo.write(sectors.current *
    (180 / sectors.count));
    dumpSvg();
    }, 'mm');
    }, 300);
    setInterval(function() {
    sonic.ping(function(err, val) {
    if (val < 5) {
    buzzer.turnOn();
    } else if (val < 20) {
    buzzer.beep(0.1, 0.1);
    } else if (val < 50) {
    buzzer.beep(0.2, 0.2);
    } else {
    buzzer.turnOff();
    }
    }, 'cm');
    }, 100);
     
  10. NikitOS

    NikitOS Король шутов Администратор

    Мое предыдущее сообщение посмотрите, я там ошибки выделил.
     
    Alen13512 нравится это.
  11. Alen13512

    Alen13512 Нерд

    Большое спасибо, я разобралась сама)
     
  12. parovoZZ

    parovoZZ Гуру

    Она девочка. Ей всегда 16.
     
  13. Alen13512

    Alen13512 Нерд

    А я смотрю вы юморист.
     
  14. NikitOS

    NikitOS Король шутов Администратор