ms-iot/remote-wiring

AnalogRead error

edgardmi opened this issue · 2 comments

Hello,

Im trying to read a value from a LM35 at PIN A0 and I getting the follow error:
Cannot convert from 'int' to 'string'

Could anyone help me?

Project: Arduino UNO + Raspberry pi 3 + Visual Studio 2017 Pro + Windows 10 iot Core

Thanks very much!
`
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Microsoft.Maker.Serial;
using Microsoft.Maker.RemoteWiring;
using Microsoft.Maker.Firmata;

namespace Raspberry
{

public sealed partial class MainPage : Page
{
    private UsbSerial connection;
    private RemoteDevice arduino;
    private UwpFirmata firmata;
    private const byte led1 = 13;
    private const byte led2 = 12;
    private DispatcherTimer readTemperatureTimer;
    private const int lm35 = 14;

    public MainPage()
    {
        this.InitializeComponent();
        this.Unloaded += MainPage_Unloaded;
    
        InitWRA();
      
    }

    private void InitWRA()
    {
        connection = new UsbSerial("VID_0403", "PID_6001");
        firmata = new UwpFirmata();
        arduino = new RemoteDevice(firmata);

        firmata.begin(connection);

        connection.ConnectionEstablished += Connection_ConnectionEstablished;
        
        connection.begin(57600, SerialConfig.SERIAL_8N1);
    }

    private void Connection_ConnectionEstablished()
    {
        arduino.pinMode(led1, PinMode.OUTPUT);
        arduino.pinMode(led2, PinMode.OUTPUT);
        arduino.pinMode(lm35, PinMode.ANALOG);
        textConnection.Text = "Connected";
        var action = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() =>
        {
            setup();
        }));
    }

    private void setup()
    {
        //Set the timer to schedule every 500 ms.
        readTemperatureTimer = new DispatcherTimer();
        readTemperatureTimer.Interval = TimeSpan.FromMilliseconds(500);
        readTemperatureTimer.Tick += readTemperature;
        readTemperatureTimer.Start();
    }

    private void Onbutton_Click(object sender, RoutedEventArgs e)
    {
        arduino.digitalWrite(led1, PinState.HIGH);
        Onbutton.Visibility = Visibility.Collapsed;
        Offbutton.Visibility = Visibility.Visible;
    }

    private void MainPage_Unloaded(object sender, RoutedEventArgs e)
    {
        arduino.Dispose();
    }

    private void Offbutton_Click(object sender, RoutedEventArgs e)
    {
        arduino.digitalWrite(led1, PinState.LOW);
        Offbutton.Visibility = Visibility.Collapsed;
        Onbutton.Visibility = Visibility.Visible;
    }

    private void readTemperature(object sender, object e)
    {
        //Read analog value from 0 to 1023, which maps from 0 to 5V
        int temperatureValue = arduino.analogRead(lm35);

        //Convert analog value to temperature.
        double temperature = (500.0 * temperatureValue) / 1024.0;

        //Print temperature to Output.
        textTemp1.Text = temperature.ToString() ;
    }
}

}
`

Sorry... I found the solution #69

My code now:

`
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Microsoft.Maker.Serial;
using Microsoft.Maker.RemoteWiring;
using Microsoft.Maker.Firmata;

namespace Raspberry
{

public sealed partial class MainPage : Page
{
    private UsbSerial usb;
    private RemoteDevice arduino;
    private const byte led1 = 13;
    private DispatcherTimer readTemperatureTimer;

    public MainPage()
    {
        this.InitializeComponent();

        usb = new UsbSerial("VID_0403", "PID_6001");
        arduino = new RemoteDevice(usb);
        arduino.DeviceReady += onDeviceReady;

        usb.begin(57600, SerialConfig.SERIAL_8N1);
    }

   

    private void onDeviceReady()
    {
        var action = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() =>
        {
            setup();
        }));
    }

    private void setup()
    {
        //Set the pin mode of the led.
        arduino.pinMode(led1, PinMode.OUTPUT);
        arduino.pinMode("A0", PinMode.ANALOG);
        textConnection.Text = "Connected";
        //Set the timer to schedule every 500 ms.
        readTemperatureTimer = new DispatcherTimer();
        readTemperatureTimer.Interval = TimeSpan.FromMilliseconds(1000);
        readTemperatureTimer.Tick += readTemperature;
        readTemperatureTimer.Start();
    }

    private void Onbutton_Click(object sender, RoutedEventArgs e)
    {
        arduino.digitalWrite(led1, PinState.HIGH);
        Onbutton.Visibility = Visibility.Collapsed;
        Offbutton.Visibility = Visibility.Visible;
    }

    private void Offbutton_Click(object sender, RoutedEventArgs e)
    {
        arduino.digitalWrite(led1, PinState.LOW);
        Offbutton.Visibility = Visibility.Collapsed;
        Onbutton.Visibility = Visibility.Visible;
    }

    private void readTemperature(object sender, object e)
    {
        //Read analog value from 0 to 1023, which maps from 0 to 5V
        int temperatureValue = arduino.analogRead("A0");

        //Convert analog value to temperature.
        double temperature = (500.0 * temperatureValue) / 1024.0;

        //Print temperature to Output.
        textTemp1.Text = temperature.ToString() ;
    }
}

}
`

Hi Edgar,
Since you have solved this issue, you can close this unless you have any further questions.
Sincerely,
IoTGirl