KotlinでAndroidアプリ開発の備忘録 No.003(Hello World トースト表示)

はじめに

王道なHello Worldをやっていきたいと思います。
但し、プロジェクトを作成すると、初めからHello Worldが出力されています。
そこで、今回のHello Worldはトーストで表示するものとします。

目次



トーストの表示

自動生成されている「MainActivity.kt」に下記のコード(1行)を追加します。

Toast.makeText(this,"Hello World",Toast.LENGTH_LONG).show()
<文法>
Toast.makeText(this,"文字列",【表示時間】).show()
 【表示時間】短いバージョン:Toast.LENGTH_SHORT
       短いバージョン:Toast.LENGTH_LONG



▼「MainActivity.kt」

package com.example.sample

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        Toast.makeText(this,"Hello World",Toast.LENGTH_LONG).show()
    }
}



▼アプリ実行画面
トーストが表示されます。
f:id:KatsuyaNote:20210221095137p:plain

ソースコードの解説

ソースコードのなんちゃって解説をします。

class MainActivity : AppCompatActivity()

まずはこちらです。これはアプリ実行される際、一番初めに呼び出されるメイン文となります。
この文はMainActivityというクラスとして定義されています。そのクラスにAppCompatActivityというクラスを所属させています。AppCompatActivityのクラスを追加することで、色々な便利なコードを簡単に書くことができるようになります。
これをかっこよく言うと、「クラスの継承」と呼ばれているみたいです。

override fun onCreate(savedInstanceState: Bundle?) 

次にこちらです。これは、アプリがスタートしたら呼び出されるメゾット(関数)です。
ですので、メゾット内にメイン文を記述すれば、アプリがスタートしたときに動作します。今回のトーストもonCreateメゾットの中に入っています。

super.onCreate(savedInstanceState)

こちらはまた今度解説します。おまじないと思ってください。

setContentView(R.layout.activity_main)

最後にこちらです。「.xml」データの呼び出しです。つまりアプリのデザイン画面を表示します。



以上、今回はココまで。ありがとうございます。

KotlinでAndroidアプリ開発の備忘録 No.002(.ktと.xmlについて)

はじめに

プロジェクト画面のソースコード上部を見るとタブがあります。
今回は、タブのファイル.ktと.xmlについて解説?します。
f:id:KatsuyaNote:20210220160109p:plain
目次



.kt

「.kt」はKotlinのktで、メインとなるデータになります。
この「.kt」にアプリの制御するコードを記述します。
プロジェクトを作成すると、下のコードが自動生成されます。

package com.example.sample

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}



.xml

「.xml」はアプリの画面をデザインするデータです。
この「.xml」はコードで記述する他にも、部品をドラック&ドロップで感覚的に画面のデザインをすることができます。
この切替は、ソースコードウィンドウの左下に【デザイン】【テキスト】から切り替えることができます。
基本的には【デザイン】で作業を進めてOKです。

f:id:KatsuyaNote:20210220161208p:plain
デザイン



以上、今回はココまで。ありがとうございます。

KotlinでAndroidアプリ開発の備忘録 No.001(AndroidStudioの起動)

はじめに

KotlinでAndroidアプリ開発をやってみたいと思います。
プログラマーではなく遊びでやってるのでコードはテキトーです。
とりあえず動けばいいやといった感じです。

目次



AndroidStudioの起動

AndroidStudioを起動させてみます。デスクトップにあるショートカットから開いてみましょう。
もしない場合は、下記のフォルダに「studio64.exe」があると思います。

C:\Program Files\Android\Android Studio\bin
f:id:KatsuyaNote:20210220145109p:plain
起動画面

新規プロジェクトを立ち上げてみます。


新規プロジェクトの立上げ

(1)プロジェクトの選択:空のアクティビティ(Empty)を選択
(2)プロジェクトの構成:下図の通り、名前とAPIレベルを指定

f:id:KatsuyaNote:20210220145641p:plain
プロジェクトの構成


画面の構成

プロジェクト画面の基本的な画面構成を説明します。
名称は勝手に独自で考えた名前です。

f:id:KatsuyaNote:20210220150504p:plain
画面の構成

 ①ツールバー  :各種設定やビルド、エミュレータ設定などする
 ②プロジェクト :各コードや画像データ等保存する場所一覧
 ③ログ     :ビルドの出力などログ
 ④ソースコード :コードを入力場所


以上、今回はココまで。ありがとうございます。

人感センサを使ってみる2

はじめに

前回の「人感センサを使ってみる1」は人感センサモジュールを使って、人を検知させました。今回は、ざっくりとソースコードの解説をメモしたいと思います。
▼前回
katsuyanote.hatenablog.com


目次

ソースコード

# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
from time import sleep
import datetime

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
print("GPIO clean中...")
print("GPIO clean完了")
GPIO.setup(17, GPIO.IN)

def main():
        i = 1
        while True:
            i=human_senser(17,i)

###############################################
#関数:human_senser(x,y)
#引数:x(入力GPIOピン),y(数値)
#戻値:検出あり→y+1,検出なし→y
#役割:人感センサ入力GPIOピンをxで指定して、
#           引数yで検出した回数を表示させる為の初期値
#           を与えます。従って,yの数値は整数であれば問題
#           ありません。
#           関数を使用時は,戻値がありますので、適当に変数
#           に代入させてください。
#必要なimportモジュールは、
#import RPi.GPIO as GPIO
#from time import sleep
#import datetime
def human_senser(x,y):
        sleep(0.5)
        if(GPIO.input(x) == GPIO.HIGH):
                print(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S') +
                ":" + str("{0:05d}".format(y)) + "回目の人感知")
                y = y + 1
                sleep(10)
        else:
                print(GPIO.input(x))
                sleep(3)
        return y
###############################################

if __name__ == '__main__':
    try:      
        main()     
    except KeyboardInterrupt:
        print("終了処理中...")
        pass      
    finally:
        GPIO.cleanup()
        print("GPIO clean完了")

コードポイント

このソースコードを読み解くポイントは下記の3つです。

(1)import文
(2)メイン文
(3)human_senser(x,y)関数

(1)import文について

# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
from time import sleep
import datetime

1~3行目まではLED点灯のコードと同じです。今回異なるのは4行目だと思います。「datetime」は年月日時分秒を取得する為のライブラリです。人を感知した時に検出時刻を出力させる為にimportさせています。

(2)main文について

//13:
def main():
        i = 1
        while True:
            i=human_senser(17,i)

メイン文はたったこんだけです。human_senser(17,i)関数に変数iを入力して、その戻り値を再びhuman_senser(17,i)関数に変数iに引数として渡しています。この操作をループさせています。重要なことは、human_senser(x,y)と言う関数が繰り返し実行されていることです。

(3)human_senser(x,y)関数について

//32:
def human_senser(x,y):
        sleep(0.5)
        if(GPIO.input(x) == GPIO.HIGH):
                print(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S') +
                ":" + str("{0:05d}".format(y)) + "回目の人感知")
                y = y + 1
                sleep(10)
        else:
                print(GPIO.input(x))
                sleep(3)
        return y

human_senser(x,y)関数の引数はxとyです。ここで引数とは関数が呼び出された時に数値をその関数内に引き渡す数値のことです。この関数では、呼び出されるとxとyを関数内に持っていきます。コードを見ると、xはGPIO.input(x)で使用していることから、どうやらGPIOピンを指定していることが分かります。次にyですが、if文中で「GPIOがHIGH」となれば、yは1プラスされます。それ以外の時はyはそのままの値となります。最後の行で「return y」でyの値を関数の戻り値(出力値)として返しています。
ここで、GPIO17には人感センサがついています。人感センサが検出したとき、センサ出力は3VつまりHIGHとなり、それ以外はLOWです。つまりここのコードでは人を検知した場合、yをカウントアップさせると言う機能を持っています。
尚、35-36行目はdatetimeライブラリを用いて、検出時刻をコマンドに出力(print)しています。このdatetimeライブラリの詳細はまたの機会に記述したいと思います。

久しぶりの投稿(練習)

はじめに

久々に投稿したいと思ったのですが、やり方が、、、

ということで、備忘録として残しておこうと思います。

目次

編集スタート

はてなブログにログインをして、右上から【ユーザー名】→【記事の管理】をクリックする。左側に【記事を書く】を選択すると、編集がスタートする。

編集モード

はてなブログの編集モードは、3つある。
(1)見たまま編集
(2)はてな記法
(3)Markdown
自分は(2)でしましょう!

構文

(1)小見出し

 *<b>小見出し</b>

「*」をつけなければ、目次みたいな感じになる。


(2)目次

 [:contents]

このを入れると、小見出し一覧が表示される。

(3)四角の枠

>||

||<

>は>、<は<で半角英数で書く。

(4)四角の枠(行番号付き)

>|python|

||<

>は>、<は<で半角英数で書く。
"||"の間にpythonと書く。ソースコードなど添付するときに役に立つ。

以上です。

人感センサを使ってみる1

はじめに

人感センサモジュールを使って、人を検知させたいと思います。検出したらコマンドに検出時間と検出回数を出します。

目次

使用部材

・ラズパイ本体
・ブレッドボード
・リード線
・焦電型赤外線センサーモジュール(人感センサモジュール)
akizukidenshi.com

ハード側

電子工作で良く使用される人感センサモジュールを使用しています。この人感センサの電源は5Vで、出力は3Vです。ラズパイのGPIOピンの入力は3Vですのでちょうど良いと思います。

f:id:KatsuyaNote:20181104124133p:plain
回路図

ソフト側

# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
from time import sleep
import datetime

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
print("GPIO clean中...")
print("GPIO clean完了")
GPIO.setup(17, GPIO.IN)

def main():
        i = 1
        while True:
            i=human_senser(17,i)

###############################################
#関数:human_senser(x,y)
#引数:x(入力GPIOピン),y(数値)
#戻値:検出あり→y+1,検出なし→y
#役割:人感センサ入力GPIOピンをxで指定して、
#           引数yで検出した回数を表示させる為の初期値
#           を与えます。従って,yの数値は整数であれば問題
#           ありません。
#           関数を使用時は,戻値がありますので、適当に変数
#           に代入させてください。
#必要なimportモジュールは、
#import RPi.GPIO as GPIO
#from time import sleep
#import datetime
def human_senser(x,y):
        sleep(0.5)
        if(GPIO.input(x) == GPIO.HIGH):
                print(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S') +
                ":" + str("{0:05d}".format(y)) + "回目の人感知")
                y = y + 1
                sleep(10)
        else:
                print(GPIO.input(x))
                sleep(3)
        return y
###############################################

if __name__ == '__main__':
    try:      
        main()     
    except KeyboardInterrupt:
        print("終了処理中...")
        pass      
    finally:
        GPIO.cleanup()
        print("GPIO clean完了")

参考ウェブサイト等

https://chasuke.com/motionsensor/

LTspiceで波形データをExcel保存

・今回は,シミュレーションで得られた波形をExcelで取り込む方法です。

→波形のデータを解析等に用いたいときに,Excelに保存しておくことでデータの扱いが簡単になり大変便利です。

※残念ながら,直接Excelに変換することはできません。

----------------------------------------------------------

・シミュレーションで波形まで出ている状態から説明に入ります。

 

ステップ

(1)LTspiceでTXTファイルとしてイクスポート

(2)Excelで読み込み

----------------------------------------------------------

(1)LTspiceでTXTファイルとしてイクスポート

 ・波形表示で[File]>[Export data as text]をクリックします。

 

f:id:KatsuyaNote:20181013131408p:plain

・上のようなウィンドウが現れます。Ctrlを押しながら出力したいデータをクリックして選択します。青くなった箇所が出力されます。また,右上の[Browse]から保存場所を変更することができます。

・[OK]をクリックするとテキストファイルが出力されます。

LTspiceはこれで終わりです。

 

----------------------------------------------------------

(2)Excelで読み込み

・新規でExcelを開きます。

・メインタブの[データ]>[テキストまたはCSVから]をクリックします。

・ファイルを選択してインポートします。

・最後に[読み込み]をクリックします。

 

 

以上,ありがとうございました。