2017年11月4日 星期六

NodeMCU I2C 1602LCD問題 設定 LCD I2C 位址 Address 將0X27換成0X3F




LiquidCrystal_I2C lcd(0x3f, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // 設定 LCD I2C 位址 
// LiquidCrystal_I2C  lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // 設定 LCD I2C 位址
//好像是LCD模組的接腳位址的問題LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); 
// 設定 LCD I2C 位址 將0X27換成0X3F



#include <Wire.h>  // Arduino IDE 內建
// LCD I2C Library:Arduino-LiquidCrystal-I2C-library-master.zip
// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3f, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // 設定 LCD I2C 位址
// LiquidCrystal_I2C  lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // 設定 LCD I2C 位址
//好像是LCD模組的接腳位址的問題LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// 設定 LCD I2C 位址 將0X27換成0X3F

void setup() {
  Serial.begin(115200);  // 用於手動輸入文字
  lcd.begin(16,2);       // 初始化 LCD,一行 16 的字元,共 2 行,預設開啟背光

  // 閃爍三次
  for(int i = 0; i < 3; i++) {
    lcd.backlight(); // 開啟背光
    delay(250);
    lcd.noBacklight(); // 關閉背光
    delay(250);
  }
  lcd.backlight();

  // 輸出初始化文字
  lcd.setCursor(0, 0); // 設定游標位置在第一行行首
  lcd.print("Hello, world!");
  delay(1000);
  lcd.setCursor(0, 1); // 設定游標位置在第二行行首
  lcd.print("GTWang.org");
  delay(8000);

  // 告知使用者可以開始手動輸入訊息
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Use Serial Mon");
  lcd.setCursor(0, 1);
  lcd.print("Type to display");
}

void loop() {
  // 當使用者手動輸入訊息
  if (Serial.available()) {
    // 等待一小段時間,確認資料都接收下來了
    delay(100);
    // 清除舊訊息
    lcd.clear();
    // 讀取新訊息
    while (Serial.available() > 0) {
      // 將訊息顯示在 LCD 上
      lcd.write(Serial.read());
    }
  }
}

2017年11月2日 星期四

[ VB2010 ] - 開發工具簡介

[ VB2010 ] - 開發工具簡介
SVBR 張啟民(ChiMin Chang/小瓜瓜 @ 2011/04/02) ... [回VB基礎語法索引]

●底下是VB6運作的簡圖,VB6開發出的應用必需與VBA及VB6內建的物件綁在一起,透過ActiveX與外部的物件做連結。

●從VB2010運作的簡圖,由VB6使用Active X對外,變成透過.Net Framework對外,並且不直接存取 Windows 資源。

●第一次由VB6轉到VB2010時,看到工具箱會讓人嚇一跳,VB6原有的控制項已不在,取而代之的是用法不同的 .Net Component,而且與VB6相比,要稍微花一點時間來瞭解這些控制項的成員,雖然控制項多了很多但有很多比VB6更實用的控制項。

●有些VB6的物件,在VB2010已不在,雖然有代替的物件可用,但要花很多時間去找,這就是VB6轉VB2010痛苦的地方,要無痛轉換是不可能的事。

●VB2010仍舊採用VB語言作為工作語言,因此與使用VB語言的其他開發工具一樣,有讓人易看、易懂、易學及易開發的特性。

●VB2010的VB語法比VB6的語法更先進,支援其他語言好的語法,例如宣告變數可直接指派值、+=及更多好用的語法。

●VB2010的運作架構改變了,但仍是VB6的後續血脈,與VB6一樣的能輕鬆的用滑鼠於表單上拖拉出物件。

●程式開發階段可直接看到屬性變化。

●不需要花費太多的力氣去處理物件動作的補捉,直覺化的事件處理,程式會自動觸發相對應的副程式。

●可以引用額外的 .Net Framework 程式庫來加強 VB2010 的能力。

●也可以繼續使用 Active X 程式庫來加強 VB2010 的能力,因此大部份舊有的 VB6 開發手法仍可繼續使用。

●工具箱內仍可再掛入更多非預設就可掛入的 .Net Framework 元件。

●Active X 控制項也可掛入工具箱,因此 VB6 專業版所提供的額外 Active X元件也可放到 VB2010 裡使用。

●VB2010 裡繼續使用 Automation,可讓資料輸往 Office、AutoCAD 等軟體,讓工作變得更自動化。

●Windows API繼續使用。

●很多要用到Windows API才能做到的功能,已經被包裝成 .Net Framework 程式庫中的一部份。

●支援多執行緒,可用多顆CPU做平行處理。

●獨特的全域模組,讓專案內的資源可跳脫命名空間的限制而共享。

●VB2010支援物件導向開發,VB6做不到的繼承,VB2010做到了。

●VB2010可以開發出許多的專案類型之應用程式。

●主控台應用程式。

●可直接開發出ASP.Net應用程式。

●支援開發新一代介面的WPF應用程式。

●支援把Function指派為變數的能力,稱之為 Lambda。

●支援LINQ的使用,可減少資料處理的程式碼,進而加快程式開發。

●沿續VB6的超容易資料轉換,第一次使用VB2010時,不用花太多時間去找出資料轉換方法或函數。










VB研究小站8.0 / SVBR8.0 http://www.svbr8.url.tw

[ VB2010 ] - 我的第一個程式

[ VB2010 ] - 我的第一個程式
SVBR 張啟民(ChiMin Chang/小瓜瓜 @ 2012/05/03) ... [回VB基礎語法索引]

●新增一個主控台應用程式專案。

●新增主控台應用程式專案完成後,會直接進入程式編輯視窗裡, Sub Main ... End Sub 則是這一次要開始第一次寫程式的區域。

●如下圖,把這兩行程式抄到你的VB2010的編輯視窗裡。

●在輸入的過程裡,VB會自動帶出所有相關成員的選單,因此寫VB不需要記太多東西。

●輸入程式的過程裡,輸入的文字是有問題的,選單就不會出現,就可以很容易的了解已經拼錯字了。

●程式已確認輸入完成後,按〝F5〞鍵即會自動執行程式。

●接下來,改試試 Windows Form 應用程式。

●新增 Windows Form 應用程式 專案完成後,可以看到 VB 裡多了一個視窗,它就叫作〝表單〞。

●用滑鼠按一下〝工具箱〞頁籤後,工具箱工具列就會出現,裡面每一個圖示都代表一個元件。

●如下圖的小圖示,它是一個按鈕元件,試著用滑鼠把它拉到表單上。

●用滑鼠雙擊剛才拉到表單上的按鈕,會自動多出來程式編輯頁籤 Private Sub Button1_Click ... End Sub 區塊裡就是這個按鈕在程式執行中,被按一下時所要執行的程式。

●依照下圖輸入程式。

●確認已輸入程式完成後,按〝F5〞鍵即會自動執行程式,結果會得到一個表單,然後用滑鼠按一下表單上的按鈕,結果如下。


VB研究小站-Visual BASIC(.NET)基礎語法 / Guide



VB研究小站-Visual BASIC(.NET)基礎語法 / Guide
小站的VB.NET入門文件 ... [回首頁]

小站的基礎語法是以概觀的方式介紹本工具的所有基本功能與能力,真正的用意並不是被用來作為新手教學,如果想要學習並閱讀新手教學相關文章,建議(1)到圖書館或是書店查閱相關書籍開始入門、(2)以小站的基礎語法作為日後備忘查閱。

入門基礎 / The first step

工具簡介VB2010VB2015
我的第一個程式
My first program
VB2005VB2010VB2015
基本資料輸出輸入介面
Input and output data
VB2005VB2010VB2015
基本的資料型態
Scalar data types
VB2005VB2010VB2015
基本的結構化資料型態
Structured data types
VB2005VB2010VB2015
基本資料的處理
Basic data handling
VB2005VB2010VB2015
運算子
Operators
VB2005VB2010VB2015
指標
Pointer
------
作業流程 / Control flow

副程式流程
Subroutine
VB2005VB2010VB2015
條件判斷流程
Branch of logic
VB2005VB2010VB2015
條件選擇流程
Branch of multiple ways
VB2005VB2010VB2015
限定範圍重複流程
Loop of a range
VB2005VB2010VB2015
限定條件重複流程
Loop of criteria
VB2005VB2010VB2015
限定元素重複流程
Loop of elements
VB2005VB2010VB2015
跳躍流程
Unconditional jumping
VB2005VB2010VB2015
錯誤捕捉流程
Exception capturing
VB2005VB2010VB2015
物件導向 / Object orientation

第一次實做類別
Create an object from a class
VB2005VB2010VB2015
類別成員
Class members
VB2005VB2010VB2015
連結介面
Interface and Connector
VB2005VB2010VB2015
建構子與解構子
Constructor and Destructor
VB2005VB2010VB2015
繼承/擴展
Inheritance / Extension
VB2005VB2010VB2015
世代交替
Alternation of generations
VB2005VB2010VB2015
多型
Polymorphism
VB2005VB2010VB2015
抽象類別
Abstract class
VB2005VB2010VB2015
資源空間

專案全域空間VB2005VB2010VB2015
命名空間VB2005VB2010VB2015
程式區塊空間VB2005VB2010VB2015
類別區塊空間VB2005VB2010VB2015
記憶保留空間VB2005VB2010VB2015
檔案操作

純文字循序存取VB2005VB2010VB2015
二進數循序存取VB2005VB2010VB2015
純文字隨機存取VB2005VB2010VB2015
二進數隨機存取VB2005VB2010VB2015
基礎檔案管理VB2005VB2010VB2015
資料應用

隨機數VB2005VB2010VB2015
三角函數VB2005VB2010VB2015
字串字元處裡VB2005VB2010VB2015
陣列元素巡迴VB2005VB2010VB2015
強化機制

物件回呼外部程式
Listener
VB2005VB2010VB2015
物件方法的委託VB2005VB2010VB2015
型別參數化VB2005VB2010VB2015
匿名副程式與 Lambda 演算
Anonymous Function & Lumbda
VB2010VB2015
閉包
Closure
VB2010VB2015


SVBR©8.0 VB研究小站 www.svbr8.url.tw @ Kaohsiung.Taiwan

[ VB2010 ] - 畫線與畫圓



源自於
http://www.svbr8.url.tw/Prg_Coding/VB/index_middle_drawing.php


Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim BMP As Bitmap = New Bitmap(200, 100, Imaging.PixelFormat.Format32bppArgb)
        Dim g As Graphics = Graphics.FromImage(BMP)
        Dim f As Font = New Font(Me.Font.Name, 12, FontStyle.Bold)

        g.FillRectangle(Brushes.White, 0, 0, 200, 200)
        g.DrawRectangle(Pens.Black, 0, 0, 199, 99)

        g.DrawLine(Pens.Black, 1, 1, 200, 100)
        g.DrawLine(Pens.Black, 1, 1, 200, 50)
        g.DrawLine(Pens.Black, 1, 1, 100, 100)

        g.DrawEllipse(Pens.Black, 15, 5, 10, 12)
        g.DrawEllipse(Pens.Black, 30, 10, 20, 24)
        g.DrawEllipse(Pens.Black, 60, 20, 40, 48)
        g.DrawEllipse(Pens.Black, 120, 40, 80, 96)

        g.DrawString("S", f, Brushes.Red, 5, 55)
        g.DrawString("V", f, Brushes.Orange, 15, 55)
        g.DrawString("B", f, Brushes.Green, 25, 55)
        g.DrawString("R", f, Brushes.Blue, 35, 55)

        g.Dispose()
        Me.BackgroundImageLayout = ImageLayout.None
        Me.BackgroundImage = BMP

    End Sub

End Class

isual BASIC(.NET)影像繪製



VB研究小站-Visual BASIC(.NET)影像繪製
小站有關於VB的影像繪製範本 ... [回首頁]


基本繪圖 / Basic

繪製線條
Draw lines
VB2005VB2010VB2015
繪製多邊形
Draw polygons
VB2005VB2010VB2015
繪製矩形
Draw rectangles
VB2005VB2010VB2015
繪製橢圓形
Draw ellipses
VB2005VB2010VB2015
繪製圓形
Draw circles
VB2005VB2010Wait
繪製弧線
Draw arcs
VB2005VB2010Wait
繪製圖片
Draw images
VB2005VB2010Wait
畫線與畫圓VB2005VB2010VB2015
繪製哆啦A夢
Draw a Doraemon
VB2005VB2010VB2015
繪製10點10分的指針VB2005VB2010VB2015
繪製模擬光譜VB2005VB2010VB2015
文字抹上漸層色VB2005VB2010VB2015
函數繪製 / Function Graph

繪製多項式函數VB2005VB2010VB2015
繪製正弦波VB2005VB2010VB2015
繪製斜橢圓VB2005VB2010VB2015
函數圖表 / Chart

繪製XY散佈圖VB2005VB2010VB2015
繪製折線圖VB2005VB2010VB2015
繪製長條圖VB2005VB2010VB2015

[ VB2010 ] - 繪製線條


源自於
http://www.svbr8.url.tw/Prg_Coding/VB/Middle/Drawing/VB_00_00_VB2010/doc.php


Graphics.DrawLine(Pen物件, X1, Y1, X2, Y2)


Public Class Form1
    Dim Painting As Bitmap

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Painting = New Bitmap(200, 100)
        Dim G As Graphics = Graphics.FromImage(Painting)
        Dim Idx As Integer

        For Idx = 1 To 100 Step 3
            G.DrawLine(Pens.White, 0, Idx, 200, Idx)
            G.DrawLine(Pens.Gray, 0, Idx + 1, 200, Idx + 1)
            G.DrawLine(Pens.Black, 0, Idx + 2, 200, Idx + 2)
        Next

        G.DrawLine(New Pen(Brushes.Red, 7), 30, 1, 10, 100)
        G.DrawLine(New Pen(Brushes.Orange, 6), 27, 1, 20, 100)
        G.DrawLine(New Pen(Brushes.Yellow, 5), 24, 1, 30, 100)
        G.DrawLine(New Pen(Brushes.Green, 4), 21, 1, 40, 100)
        G.DrawLine(New Pen(Brushes.Blue, 3), 18, 1, 50, 100)
        G.DrawLine(New Pen(Brushes.Indigo, 2), 15, 1, 60, 100)
        G.DrawLine(Pens.Purple, 12, 1, 70, 100)
        G.DrawLine(Pens.Black, 9, 1, 80, 100)
        G.DrawLine(Pens.Gray, 6, 1, 90, 100)
        G.DrawLine(Pens.White, 3, 1, 100, 100)

        Me.BackgroundImageLayout = ImageLayout.None
        Me.BackgroundImage = Painting
    End Sub

End Class

Slide Swith in Wokwi 控制 EasyBuilderPro HMI 的 指示燈ON ,OFF

Slide  Swith in  Wokwi  控制   EasyBuilderPro HMI 的 指示燈 Lamp  ON ,OFF // 1. 修改 MQTT Broker 網址 const char * mqtt_server = "mqttgo.io...